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/03/29 14:47:49 UTC

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

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 517ab958a -> 2a4c7d894


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
index 8d81289..f779e13 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
@@ -61,272 +61,309 @@
 <span class="sourceLineNo">053</span>import org.apache.zookeeper.KeeperException;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>import org.junit.After;<a name="line.54"></a>
 <span class="sourceLineNo">055</span>import org.junit.AfterClass;<a name="line.55"></a>
-<span class="sourceLineNo">056</span>import org.junit.BeforeClass;<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.junit.ClassRule;<a name="line.57"></a>
-<span class="sourceLineNo">058</span>import org.junit.Ignore;<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.junit.Rule;<a name="line.59"></a>
-<span class="sourceLineNo">060</span>import org.junit.Test;<a name="line.60"></a>
-<span class="sourceLineNo">061</span>import org.junit.experimental.categories.Category;<a name="line.61"></a>
-<span class="sourceLineNo">062</span>import org.junit.rules.TestName;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>import org.mockito.Mockito;<a name="line.63"></a>
-<span class="sourceLineNo">064</span>import org.slf4j.Logger;<a name="line.64"></a>
-<span class="sourceLineNo">065</span>import org.slf4j.LoggerFactory;<a name="line.65"></a>
-<span class="sourceLineNo">066</span><a name="line.66"></a>
-<span class="sourceLineNo">067</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;<a name="line.68"></a>
-<span class="sourceLineNo">069</span><a name="line.69"></a>
-<span class="sourceLineNo">070</span>/**<a name="line.70"></a>
-<span class="sourceLineNo">071</span> * Standup the master and fake it to test various aspects of master function.<a name="line.71"></a>
-<span class="sourceLineNo">072</span> * Does NOT spin up a mini hbase nor mini dfs cluster testing master (it does<a name="line.72"></a>
-<span class="sourceLineNo">073</span> * put up a zk cluster but this is usually pretty fast compared).  Also, should<a name="line.73"></a>
-<span class="sourceLineNo">074</span> * be possible to inject faults at points difficult to get at in cluster context.<a name="line.74"></a>
-<span class="sourceLineNo">075</span> * TODO: Speed up the zk connection by Master.  It pauses 5 seconds establishing<a name="line.75"></a>
-<span class="sourceLineNo">076</span> * session.<a name="line.76"></a>
-<span class="sourceLineNo">077</span> */<a name="line.77"></a>
-<span class="sourceLineNo">078</span>@Category({MasterTests.class, MediumTests.class})<a name="line.78"></a>
-<span class="sourceLineNo">079</span>public class TestMasterNoCluster {<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  @ClassRule<a name="line.81"></a>
-<span class="sourceLineNo">082</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      HBaseClassTestRule.forClass(TestMasterNoCluster.class);<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMasterNoCluster.class);<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  private static final HBaseTestingUtility TESTUTIL = new HBaseTestingUtility();<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @Rule<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public TestName name = new TestName();<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>  @BeforeClass<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  public static void setUpBeforeClass() throws Exception {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    Configuration c = TESTUTIL.getConfiguration();<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    // We use local filesystem.  Set it so it writes into the testdir.<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    FSUtils.setRootDir(c, TESTUTIL.getDataTestDir());<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    DefaultMetricsSystem.setMiniClusterMode(true);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    // Startup a mini zk cluster.<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    TESTUTIL.startMiniZKCluster();<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  }<a name="line.99"></a>
-<span class="sourceLineNo">100</span><a name="line.100"></a>
-<span class="sourceLineNo">101</span>  @AfterClass<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  public static void tearDownAfterClass() throws Exception {<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    TESTUTIL.shutdownMiniZKCluster();<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>  @After<a name="line.106"></a>
-<span class="sourceLineNo">107</span>  public void tearDown()<a name="line.107"></a>
-<span class="sourceLineNo">108</span>  throws KeeperException, ZooKeeperConnectionException, IOException {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    // Make sure zk is clean before we run the next test.<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    ZKWatcher zkw = new ZKWatcher(TESTUTIL.getConfiguration(),<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        "@Before", new Abortable() {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      @Override<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      public void abort(String why, Throwable e) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        throw new RuntimeException(why, e);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
-<span class="sourceLineNo">116</span><a name="line.116"></a>
-<span class="sourceLineNo">117</span>      @Override<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      public boolean isAborted() {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>        return false;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    });<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    ZKUtil.deleteNodeRecursively(zkw, zkw.znodePaths.baseZNode);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    zkw.close();<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  }<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>  /**<a name="line.126"></a>
-<span class="sourceLineNo">127</span>   * Test starting master then stopping it before its fully up.<a name="line.127"></a>
-<span class="sourceLineNo">128</span>   * @throws IOException<a name="line.128"></a>
-<span class="sourceLineNo">129</span>   * @throws KeeperException<a name="line.129"></a>
-<span class="sourceLineNo">130</span>   * @throws InterruptedException<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 testStopDuringStart()<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  throws IOException, KeeperException, InterruptedException {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    HMaster master = new HMaster(TESTUTIL.getConfiguration());<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    master.start();<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    // Immediately have it stop.  We used hang in assigning meta.<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    master.stopMaster();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    master.join();<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 master failover.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   * Start up three fake regionservers and a master.<a name="line.144"></a>
-<span class="sourceLineNo">145</span>   * @throws IOException<a name="line.145"></a>
-<span class="sourceLineNo">146</span>   * @throws KeeperException<a name="line.146"></a>
-<span class="sourceLineNo">147</span>   * @throws InterruptedException<a name="line.147"></a>
-<span class="sourceLineNo">148</span>   * @throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException<a name="line.148"></a>
-<span class="sourceLineNo">149</span>   */<a name="line.149"></a>
-<span class="sourceLineNo">150</span>  @Ignore @Test // Disabled since HBASE-18511. Reenable when master can carry regions.<a name="line.150"></a>
-<span class="sourceLineNo">151</span>  public void testFailover() throws Exception {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    final long now = System.currentTimeMillis();<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    // Names for our three servers.  Make the port numbers match hostname.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    // Will come in use down in the server when we need to figure how to respond.<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    final ServerName sn0 = ServerName.valueOf("0.example.org", 0, now);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    final ServerName sn1 = ServerName.valueOf("1.example.org", 1, now);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    final ServerName sn2 = ServerName.valueOf("2.example.org", 2, now);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    final ServerName [] sns = new ServerName [] {sn0, sn1, sn2};<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    // Put up the mock servers<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    final Configuration conf = TESTUTIL.getConfiguration();<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    final MockRegionServer rs0 = new MockRegionServer(conf, sn0);<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    final MockRegionServer rs1 = new MockRegionServer(conf, sn1);<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    final MockRegionServer rs2 = new MockRegionServer(conf, sn2);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    // Put some data into the servers.  Make it look like sn0 has the metaH<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Put data into sn2 so it looks like it has a few regions for a table named 't'.<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    MetaTableLocator.setMetaLocation(rs0.getZooKeeper(),<a name="line.166"></a>
-<span class="sourceLineNo">167</span>      rs0.getServerName(), RegionState.State.OPEN);<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    Result [] results = new Result [] {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      MetaMockingUtil.getMetaTableRowResult(<a name="line.170"></a>
-<span class="sourceLineNo">171</span>        new HRegionInfo(tableName, HConstants.EMPTY_START_ROW, HBaseTestingUtility.KEYS[1]),<a name="line.171"></a>
-<span class="sourceLineNo">172</span>        rs2.getServerName()),<a name="line.172"></a>
-<span class="sourceLineNo">173</span>      MetaMockingUtil.getMetaTableRowResult(<a name="line.173"></a>
-<span class="sourceLineNo">174</span>        new HRegionInfo(tableName, HBaseTestingUtility.KEYS[1], HBaseTestingUtility.KEYS[2]),<a name="line.174"></a>
-<span class="sourceLineNo">175</span>        rs2.getServerName()),<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      MetaMockingUtil.getMetaTableRowResult(new HRegionInfo(tableName, HBaseTestingUtility.KEYS[2],<a name="line.176"></a>
-<span class="sourceLineNo">177</span>          HConstants.EMPTY_END_ROW),<a name="line.177"></a>
-<span class="sourceLineNo">178</span>        rs2.getServerName())<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    };<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    rs1.setNextResults(HRegionInfo.FIRST_META_REGIONINFO.getRegionName(), results);<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    // Create master.  Subclass to override a few methods so we can insert mocks<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // and get notification on transitions.  We need to fake out any rpcs the<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    // master does opening/closing regions.  Also need to fake out the address<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    // of the 'remote' mocked up regionservers.<a name="line.185"></a>
-<span class="sourceLineNo">186</span>    // Insert a mock for the connection, use TESTUTIL.getConfiguration rather than<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    // the conf from the master; the conf will already have an ClusterConnection<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    // associate so the below mocking of a connection will fail.<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    final ClusterConnection mockedConnection = HConnectionTestingUtility.getMockedConnectionAndDecorate(<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        TESTUTIL.getConfiguration(), rs0, rs0, rs0.getServerName(),<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        HRegionInfo.FIRST_META_REGIONINFO);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    HMaster master = new HMaster(conf) {<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      InetAddress getRemoteInetAddress(final int port, final long serverStartCode)<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      throws UnknownHostException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        // Return different address dependent on port passed.<a name="line.196"></a>
-<span class="sourceLineNo">197</span>        if (port &gt; sns.length) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          return super.getRemoteInetAddress(port, serverStartCode);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>        }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>        ServerName sn = sns[port];<a name="line.200"></a>
-<span class="sourceLineNo">201</span>        return InetAddress.getByAddress(sn.getHostname(),<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          new byte [] {10, 0, 0, (byte)sn.getPort()});<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      }<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>      @Override<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      void initClusterSchemaService() throws IOException, InterruptedException {}<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>      @Override<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      ServerManager createServerManager(MasterServices master) throws IOException {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>        ServerManager sm = super.createServerManager(master);<a name="line.210"></a>
-<span class="sourceLineNo">211</span>        // Spy on the created servermanager<a name="line.211"></a>
-<span class="sourceLineNo">212</span>        ServerManager spy = Mockito.spy(sm);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>        return spy;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      }<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>      @Override<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      public ClusterConnection getConnection() {<a name="line.217"></a>
-<span class="sourceLineNo">218</span>        return mockedConnection;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      }<a name="line.219"></a>
-<span class="sourceLineNo">220</span><a name="line.220"></a>
-<span class="sourceLineNo">221</span>      @Override<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      public ClusterConnection getClusterConnection() {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        return mockedConnection;<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      }<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    };<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    master.start();<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>    try {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      // Wait till master is up ready for RPCs.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      while (!master.serviceStarted) Threads.sleep(10);<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      // Fake master that there are regionservers out there.  Report in.<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      for (int i = 0; i &lt; sns.length; i++) {<a name="line.232"></a>
-<span class="sourceLineNo">233</span>        RegionServerReportRequest.Builder request = RegionServerReportRequest.newBuilder();<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        ServerName sn = ServerName.parseVersionedServerName(sns[i].getVersionedBytes());<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        request.setServer(ProtobufUtil.toServerName(sn));<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        request.setLoad(ServerMetricsBuilder.toServerLoad(ServerMetricsBuilder.of(sn)));<a name="line.236"></a>
-<span class="sourceLineNo">237</span>        master.getMasterRpcServices().regionServerReport(null, request.build());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>       // Master should now come up.<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      while (!master.isInitialized()) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        Threads.sleep(100);<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      }<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      assertTrue(master.isInitialized());<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      rs0.stop("Test is done");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      rs1.stop("Test is done");<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      rs2.stop("Test is done");<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      master.stopMaster();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      master.join();<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>  @Ignore @Test // Disabled since HBASE-18511. Reenable when master can carry regions.<a name="line.253"></a>
-<span class="sourceLineNo">254</span>  public void testNotPullingDeadRegionServerFromZK()<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      throws IOException, KeeperException, InterruptedException {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    final Configuration conf = TESTUTIL.getConfiguration();<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    final ServerName newServer = ServerName.valueOf("test.sample", 1, 101);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    final ServerName deadServer = ServerName.valueOf("test.sample", 1, 100);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    final MockRegionServer rs0 = new MockRegionServer(conf, newServer);<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>    HMaster master = new HMaster(conf) {<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      @Override<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      MasterMetaBootstrap createMetaBootstrap(final HMaster master, final MonitoredTask status) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        return new MasterMetaBootstrap(this, status) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>          @Override<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          protected void assignMetaReplicas()<a name="line.266"></a>
-<span class="sourceLineNo">267</span>              throws IOException, InterruptedException, KeeperException {<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            // Nothing to do.<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><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      @Override<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      void initClusterSchemaService() throws IOException, InterruptedException {}<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>      @Override<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      void initializeZKBasedSystemTrackers() throws IOException, InterruptedException,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>          KeeperException, ReplicationException {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        super.initializeZKBasedSystemTrackers();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        // Record a newer server in server manager at first<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        getServerManager().recordNewServerWithLock(newServer,<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          new ServerLoad(ServerMetricsBuilder.of(newServer)));<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>        List&lt;ServerName&gt; onlineServers = new ArrayList&lt;&gt;();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>        onlineServers.add(deadServer);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        onlineServers.add(newServer);<a name="line.286"></a>
-<span class="sourceLineNo">287</span>        // Mock the region server tracker to pull the dead server from zk<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        regionServerTracker = Mockito.spy(regionServerTracker);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        Mockito.doReturn(onlineServers).when(<a name="line.289"></a>
-<span class="sourceLineNo">290</span>          regionServerTracker).getOnlineServers();<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>      @Override<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      public ClusterConnection getConnection() {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        // Insert a mock for the connection, use TESTUTIL.getConfiguration rather than<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        // the conf from the master; the conf will already have a Connection<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        // associate so the below mocking of a connection will fail.<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        try {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>          return HConnectionTestingUtility.getMockedConnectionAndDecorate(<a name="line.299"></a>
-<span class="sourceLineNo">300</span>            TESTUTIL.getConfiguration(), rs0, rs0, rs0.getServerName(),<a name="line.300"></a>
-<span class="sourceLineNo">301</span>            HRegionInfo.FIRST_META_REGIONINFO);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        } catch (IOException e) {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>          return null;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>        }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    };<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    master.start();<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    try {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      // Wait till master is initialized.<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      while (!master.isInitialized()) Threads.sleep(10);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      LOG.info("Master is initialized");<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>      assertFalse("The dead server should not be pulled in",<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        master.getServerManager().isServerOnline(deadServer));<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    } finally {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      master.stopMaster();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      master.join();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>}<a name="line.321"></a>
+<span class="sourceLineNo">056</span>import org.junit.Assert;<a name="line.56"></a>
+<span class="sourceLineNo">057</span>import org.junit.BeforeClass;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>import org.junit.ClassRule;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>import org.junit.Ignore;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>import org.junit.Rule;<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.junit.Test;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>import org.junit.experimental.categories.Category;<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.junit.rules.TestName;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>import org.mockito.Mockito;<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.slf4j.Logger;<a name="line.65"></a>
+<span class="sourceLineNo">066</span>import org.slf4j.LoggerFactory;<a name="line.66"></a>
+<span class="sourceLineNo">067</span><a name="line.67"></a>
+<span class="sourceLineNo">068</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerReportRequest;<a name="line.69"></a>
+<span class="sourceLineNo">070</span><a name="line.70"></a>
+<span class="sourceLineNo">071</span>/**<a name="line.71"></a>
+<span class="sourceLineNo">072</span> * Standup the master and fake it to test various aspects of master function.<a name="line.72"></a>
+<span class="sourceLineNo">073</span> * Does NOT spin up a mini hbase nor mini dfs cluster testing master (it does<a name="line.73"></a>
+<span class="sourceLineNo">074</span> * put up a zk cluster but this is usually pretty fast compared).  Also, should<a name="line.74"></a>
+<span class="sourceLineNo">075</span> * be possible to inject faults at points difficult to get at in cluster context.<a name="line.75"></a>
+<span class="sourceLineNo">076</span> * TODO: Speed up the zk connection by Master.  It pauses 5 seconds establishing<a name="line.76"></a>
+<span class="sourceLineNo">077</span> * session.<a name="line.77"></a>
+<span class="sourceLineNo">078</span> */<a name="line.78"></a>
+<span class="sourceLineNo">079</span>@Category({MasterTests.class, MediumTests.class})<a name="line.79"></a>
+<span class="sourceLineNo">080</span>public class TestMasterNoCluster {<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @ClassRule<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      HBaseClassTestRule.forClass(TestMasterNoCluster.class);<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>  private static final Logger LOG = LoggerFactory.getLogger(TestMasterNoCluster.class);<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  private static final HBaseTestingUtility TESTUTIL = new HBaseTestingUtility();<a name="line.87"></a>
+<span class="sourceLineNo">088</span><a name="line.88"></a>
+<span class="sourceLineNo">089</span>  @Rule<a name="line.89"></a>
+<span class="sourceLineNo">090</span>  public TestName name = new TestName();<a name="line.90"></a>
+<span class="sourceLineNo">091</span><a name="line.91"></a>
+<span class="sourceLineNo">092</span>  @BeforeClass<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  public static void setUpBeforeClass() throws Exception {<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    Configuration c = TESTUTIL.getConfiguration();<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    // We use local filesystem.  Set it so it writes into the testdir.<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    FSUtils.setRootDir(c, TESTUTIL.getDataTestDir());<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    DefaultMetricsSystem.setMiniClusterMode(true);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    // Startup a mini zk cluster.<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    TESTUTIL.startMiniZKCluster();<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  }<a name="line.100"></a>
+<span class="sourceLineNo">101</span><a name="line.101"></a>
+<span class="sourceLineNo">102</span>  @AfterClass<a name="line.102"></a>
+<span class="sourceLineNo">103</span>  public static void tearDownAfterClass() throws Exception {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    TESTUTIL.shutdownMiniZKCluster();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  }<a name="line.105"></a>
+<span class="sourceLineNo">106</span><a name="line.106"></a>
+<span class="sourceLineNo">107</span>  @After<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  public void tearDown()<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  throws KeeperException, ZooKeeperConnectionException, IOException {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // Make sure zk is clean before we run the next test.<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    ZKWatcher zkw = new ZKWatcher(TESTUTIL.getConfiguration(),<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        "@Before", new Abortable() {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      @Override<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      public void abort(String why, Throwable e) {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        throw new RuntimeException(why, e);<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      }<a name="line.116"></a>
+<span class="sourceLineNo">117</span><a name="line.117"></a>
+<span class="sourceLineNo">118</span>      @Override<a name="line.118"></a>
+<span class="sourceLineNo">119</span>      public boolean isAborted() {<a name="line.119"></a>
+<span class="sourceLineNo">120</span>        return false;<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>    ZKUtil.deleteNodeRecursively(zkw, zkw.znodePaths.baseZNode);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    zkw.close();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>  }<a name="line.125"></a>
+<span class="sourceLineNo">126</span><a name="line.126"></a>
+<span class="sourceLineNo">127</span>  /**<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   * Test starting master then stopping it before its fully up.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @throws IOException<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @throws KeeperException<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws InterruptedException<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   */<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  @Test<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  public void testStopDuringStart()<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  throws IOException, KeeperException, InterruptedException {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    HMaster master = new HMaster(TESTUTIL.getConfiguration());<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    master.start();<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // Immediately have it stop.  We used hang in assigning meta.<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    master.stopMaster();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    master.join();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>  }<a name="line.141"></a>
+<span class="sourceLineNo">142</span><a name="line.142"></a>
+<span class="sourceLineNo">143</span>  /**<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * Test master failover.<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   * Start up three fake regionservers and a master.<a name="line.145"></a>
+<span class="sourceLineNo">146</span>   * @throws IOException<a name="line.146"></a>
+<span class="sourceLineNo">147</span>   * @throws KeeperException<a name="line.147"></a>
+<span class="sourceLineNo">148</span>   * @throws InterruptedException<a name="line.148"></a>
+<span class="sourceLineNo">149</span>   * @throws org.apache.hbase.thirdparty.com.google.protobuf.ServiceException<a name="line.149"></a>
+<span class="sourceLineNo">150</span>   */<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  @Ignore @Test // Disabled since HBASE-18511. Reenable when master can carry regions.<a name="line.151"></a>
+<span class="sourceLineNo">152</span>  public void testFailover() throws Exception {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    final long now = System.currentTimeMillis();<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    // Names for our three servers.  Make the port numbers match hostname.<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // Will come in use down in the server when we need to figure how to respond.<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    final ServerName sn0 = ServerName.valueOf("0.example.org", 0, now);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    final ServerName sn1 = ServerName.valueOf("1.example.org", 1, now);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    final ServerName sn2 = ServerName.valueOf("2.example.org", 2, now);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    final ServerName [] sns = new ServerName [] {sn0, sn1, sn2};<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    // Put up the mock servers<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    final Configuration conf = TESTUTIL.getConfiguration();<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    final MockRegionServer rs0 = new MockRegionServer(conf, sn0);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    final MockRegionServer rs1 = new MockRegionServer(conf, sn1);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    final MockRegionServer rs2 = new MockRegionServer(conf, sn2);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    // Put some data into the servers.  Make it look like sn0 has the metaH<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // Put data into sn2 so it looks like it has a few regions for a table named 't'.<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    MetaTableLocator.setMetaLocation(rs0.getZooKeeper(),<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      rs0.getServerName(), RegionState.State.OPEN);<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    Result [] results = new Result [] {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      MetaMockingUtil.getMetaTableRowResult(<a name="line.171"></a>
+<span class="sourceLineNo">172</span>        new HRegionInfo(tableName, HConstants.EMPTY_START_ROW, HBaseTestingUtility.KEYS[1]),<a name="line.172"></a>
+<span class="sourceLineNo">173</span>        rs2.getServerName()),<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      MetaMockingUtil.getMetaTableRowResult(<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        new HRegionInfo(tableName, HBaseTestingUtility.KEYS[1], HBaseTestingUtility.KEYS[2]),<a name="line.175"></a>
+<span class="sourceLineNo">176</span>        rs2.getServerName()),<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      MetaMockingUtil.getMetaTableRowResult(new HRegionInfo(tableName, HBaseTestingUtility.KEYS[2],<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          HConstants.EMPTY_END_ROW),<a name="line.178"></a>
+<span class="sourceLineNo">179</span>        rs2.getServerName())<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    };<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    rs1.setNextResults(HRegionInfo.FIRST_META_REGIONINFO.getRegionName(), results);<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>    // Create master.  Subclass to override a few methods so we can insert mocks<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    // and get notification on transitions.  We need to fake out any rpcs the<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    // master does opening/closing regions.  Also need to fake out the address<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    // of the 'remote' mocked up regionservers.<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    // Insert a mock for the connection, use TESTUTIL.getConfiguration rather than<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    // the conf from the master; the conf will already have an ClusterConnection<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // associate so the below mocking of a connection will fail.<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    final ClusterConnection mockedConnection = HConnectionTestingUtility.getMockedConnectionAndDecorate(<a name="line.190"></a>
+<span class="sourceLineNo">191</span>        TESTUTIL.getConfiguration(), rs0, rs0, rs0.getServerName(),<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        HRegionInfo.FIRST_META_REGIONINFO);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>    HMaster master = new HMaster(conf) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      @Override<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      InetAddress getRemoteInetAddress(final int port, final long serverStartCode)<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      throws UnknownHostException {<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        // Return different address dependent on port passed.<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        if (port &gt; sns.length) {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>          return super.getRemoteInetAddress(port, serverStartCode);<a name="line.199"></a>
+<span class="sourceLineNo">200</span>        }<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        ServerName sn = sns[port];<a name="line.201"></a>
+<span class="sourceLineNo">202</span>        return InetAddress.getByAddress(sn.getHostname(),<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          new byte [] {10, 0, 0, (byte)sn.getPort()});<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      }<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>      @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>      void initClusterSchemaService() throws IOException, InterruptedException {}<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>      @Override<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      ServerManager createServerManager(MasterServices master) throws IOException {<a name="line.210"></a>
+<span class="sourceLineNo">211</span>        ServerManager sm = super.createServerManager(master);<a name="line.211"></a>
+<span class="sourceLineNo">212</span>        // Spy on the created servermanager<a name="line.212"></a>
+<span class="sourceLineNo">213</span>        ServerManager spy = Mockito.spy(sm);<a name="line.213"></a>
+<span class="sourceLineNo">214</span>        return spy;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      }<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>      @Override<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      public ClusterConnection getConnection() {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>        return mockedConnection;<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>      @Override<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      public ClusterConnection getClusterConnection() {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>        return mockedConnection;<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    };<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    master.start();<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>    try {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // Wait till master is up ready for RPCs.<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      while (!master.serviceStarted) Threads.sleep(10);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      // Fake master that there are regionservers out there.  Report in.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      for (int i = 0; i &lt; sns.length; i++) {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        RegionServerReportRequest.Builder request = RegionServerReportRequest.newBuilder();<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        ServerName sn = ServerName.parseVersionedServerName(sns[i].getVersionedBytes());<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        request.setServer(ProtobufUtil.toServerName(sn));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        request.setLoad(ServerMetricsBuilder.toServerLoad(ServerMetricsBuilder.of(sn)));<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        master.getMasterRpcServices().regionServerReport(null, request.build());<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>       // Master should now come up.<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      while (!master.isInitialized()) {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        Threads.sleep(100);<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      }<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      assertTrue(master.isInitialized());<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    } finally {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      rs0.stop("Test is done");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      rs1.stop("Test is done");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>      rs2.stop("Test is done");<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      master.stopMaster();<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      master.join();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  }<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  @Ignore @Test // Disabled since HBASE-18511. Reenable when master can carry regions.<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public void testNotPullingDeadRegionServerFromZK()<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      throws IOException, KeeperException, InterruptedException {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    final Configuration conf = TESTUTIL.getConfiguration();<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    final ServerName newServer = ServerName.valueOf("test.sample", 1, 101);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    final ServerName deadServer = ServerName.valueOf("test.sample", 1, 100);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    final MockRegionServer rs0 = new MockRegionServer(conf, newServer);<a name="line.260"></a>
+<span class="sourceLineNo">261</span><a name="line.261"></a>
+<span class="sourceLineNo">262</span>    HMaster master = new HMaster(conf) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      @Override<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      MasterMetaBootstrap createMetaBootstrap(final HMaster master, final MonitoredTask status) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        return new MasterMetaBootstrap(this, status) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>          @Override<a name="line.266"></a>
+<span class="sourceLineNo">267</span>          protected void assignMetaReplicas()<a name="line.267"></a>
+<span class="sourceLineNo">268</span>              throws IOException, InterruptedException, KeeperException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>            // Nothing to do.<a name="line.269"></a>
+<span class="sourceLineNo">270</span>          }<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        };<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      }<a name="line.272"></a>
+<span class="sourceLineNo">273</span><a name="line.273"></a>
+<span class="sourceLineNo">274</span>      @Override<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      void initClusterSchemaService() throws IOException, InterruptedException {}<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>      @Override<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      void initializeZKBasedSystemTrackers() throws IOException, InterruptedException,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>          KeeperException, ReplicationException {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        super.initializeZKBasedSystemTrackers();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        // Record a newer server in server manager at first<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        getServerManager().recordNewServerWithLock(newServer,<a name="line.282"></a>
+<span class="sourceLineNo">283</span>          new ServerLoad(ServerMetricsBuilder.of(newServer)));<a name="line.283"></a>
+<span class="sourceLineNo">284</span><a name="line.284"></a>
+<span class="sourceLineNo">285</span>        List&lt;ServerName&gt; onlineServers = new ArrayList&lt;&gt;();<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        onlineServers.add(deadServer);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        onlineServers.add(newServer);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        // Mock the region server tracker to pull the dead server from zk<a name="line.288"></a>
+<span class="sourceLineNo">289</span>        regionServerTracker = Mockito.spy(regionServerTracker);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        Mockito.doReturn(onlineServers).when(<a name="line.290"></a>
+<span class="sourceLineNo">291</span>          regionServerTracker).getOnlineServers();<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>      @Override<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      public ClusterConnection getConnection() {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        // Insert a mock for the connection, use TESTUTIL.getConfiguration rather than<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        // the conf from the master; the conf will already have a Connection<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        // associate so the below mocking of a connection will fail.<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        try {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          return HConnectionTestingUtility.getMockedConnectionAndDecorate(<a name="line.300"></a>
+<span class="sourceLineNo">301</span>            TESTUTIL.getConfiguration(), rs0, rs0, rs0.getServerName(),<a name="line.301"></a>
+<span class="sourceLineNo">302</span>            HRegionInfo.FIRST_META_REGIONINFO);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        } catch (IOException e) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>          return null;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      }<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    };<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    master.start();<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>    try {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // Wait till master is initialized.<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      while (!master.isInitialized()) Threads.sleep(10);<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      LOG.info("Master is initialized");<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>      assertFalse("The dead server should not be pulled in",<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        master.getServerManager().isServerOnline(deadServer));<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    } finally {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      master.stopMaster();<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      master.join();<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  }<a name="line.321"></a>
+<span class="sourceLineNo">322</span><a name="line.322"></a>
+<span class="sourceLineNo">323</span>  @Test(timeout = 60000)<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public void testMasterInitWithSameClientServerZKQuorum() throws Exception {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    Configuration conf = new Configuration(TESTUTIL.getConfiguration());<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    conf.set(HConstants.CLIENT_ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    conf.setInt(HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT, TESTUTIL.getZkCluster().getClientPort());<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    HMaster master = new HMaster(conf);<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    master.start();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // the master will abort due to IllegalArgumentException so we should finish within 60 seconds<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    master.join();<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>  @Test(timeout = 60000)<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public void testMasterInitWithObserverModeClientZKQuorum() throws Exception {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    Configuration conf = new Configuration(TESTUTIL.getConfiguration());<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    Assert.assertFalse(Boolean.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE));<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    // set client ZK to some non-existing address and make sure server won't access client ZK<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    // (server start should not be affected)<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    conf.set(HConstants.CLIENT_ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    conf.setInt(HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT,<a name="line.341"></a>
+<span class="sourceLineNo">342</span>      TESTUTIL.getZkCluster().getClientPort() + 1);<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    // settings to allow us not to start additional RS<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    conf.setInt(ServerManager.WAIT_ON_REGIONSERVERS_MINTOSTART, 1);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    conf.setBoolean(LoadBalancer.TABLES_ON_MASTER, true);<a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // main setting for this test case<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    conf.setBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE, true);<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    HMaster master = new HMaster(conf);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    master.start();<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    while (!master.isInitialized()) {<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      Threads.sleep(200);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    Assert.assertNull(master.metaLocationSyncer);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    Assert.assertNull(master.masterAddressSyncer);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    master.stopMaster();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    master.join();<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>}<a name="line.358"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
index 32a8ed1..7aeb6fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
@@ -333,3464 +333,3478 @@
 <span class="sourceLineNo">325</span><a name="line.325"></a>
 <span class="sourceLineNo">326</span>  volatile boolean killed = false;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected final Configuration conf;<a name="line.328"></a>
+<span class="sourceLineNo">328</span>  private volatile boolean shutDown = false;<a name="line.328"></a>
 <span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private Path rootDir;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private Path walRootDir;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.333"></a>
+<span class="sourceLineNo">330</span>  protected final Configuration conf;<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Path rootDir;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private Path walRootDir;<a name="line.333"></a>
 <span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  final int numRetries;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  protected final int threadWakeFrequency;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected final int msgInterval;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  protected final int numRegionsToReport;<a name="line.339"></a>
+<span class="sourceLineNo">335</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  final int numRetries;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected final int threadWakeFrequency;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  protected final int msgInterval;<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  // Stub to do region server status calls against the master.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  RpcClient rpcClient;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.350"></a>
+<span class="sourceLineNo">341</span>  protected final int numRegionsToReport;<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // Stub to do region server status calls against the master.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  RpcClient rpcClient;<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // into web context.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  protected InfoServer infoServer;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private JvmPauseMonitor pauseMonitor;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** region server process name */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public static final String REGIONSERVER = "regionserver";<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  MetricsRegionServer metricsRegionServer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  MetricsTable metricsTable;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private SpanReceiverHost spanReceiverHost;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ChoreService choreService;<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>   * Check for compactions requests.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  ScheduledChore compactionChecker;<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Check for flushes<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  ScheduledChore periodicFlusher;<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  protected volatile WALFactory walFactory;<a name="line.380"></a>
+<span class="sourceLineNo">352</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  // into web context.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  protected InfoServer infoServer;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private JvmPauseMonitor pauseMonitor;<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /** region server process name */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public static final String REGIONSERVER = "regionserver";<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  MetricsRegionServer metricsRegionServer;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  MetricsTable metricsTable;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private SpanReceiverHost spanReceiverHost;<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>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ChoreService choreService;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Check for compactions requests.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  ScheduledChore compactionChecker;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /*<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Check for flushes<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  ScheduledChore periodicFlusher;<a name="line.380"></a>
 <span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  // WAL roller. log is protected rather than private to avoid<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // eclipse warning when accessed by inner classes<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  protected LogRoller walRoller;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // A thread which calls reportProcedureDone<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  // flag set after we're done setting up server threads<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // zookeeper connection and watcher<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected final ZKWatcher zooKeeper;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // master address tracker<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // Cluster Status Tracker<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  // Log Splitting Worker<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private SplitLogWorker splitLogWorker;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // A sleeper that sleeps for msgInterval.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  protected final Sleeper sleeper;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final int operationTimeout;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private final int shortOperationTimeout;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.410"></a>
+<span class="sourceLineNo">382</span>  protected volatile WALFactory walFactory;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // WAL roller. log is protected rather than private to avoid<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  // eclipse warning when accessed by inner classes<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  protected LogRoller walRoller;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  // A thread which calls reportProcedureDone<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  // flag set after we're done setting up server threads<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  // zookeeper connection and watcher<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected final ZKWatcher zooKeeper;<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // master address tracker<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  // Cluster Status Tracker<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  // Log Splitting Worker<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private SplitLogWorker splitLogWorker;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // A sleeper that sleeps for msgInterval.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected final Sleeper sleeper;<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private final int operationTimeout;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final int shortOperationTimeout;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // Cache configuration and block cache reference<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  protected CacheConfig cacheConfig;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // Cache configuration for mob<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  final MobCacheConfig mobCacheConfig;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /** The health check chore. */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private HealthCheckChore healthCheckChore;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /** The nonce manager chore. */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private ScheduledChore nonceManagerChore;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.423"></a>
+<span class="sourceLineNo">412</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  // Cache configuration and block cache reference<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  protected CacheConfig cacheConfig;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  // Cache configuration for mob<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  final MobCacheConfig mobCacheConfig;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  /** The health check chore. */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private HealthCheckChore healthCheckChore;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  /** The nonce manager chore. */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ScheduledChore nonceManagerChore;<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>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * against  Master.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  protected ServerName serverName;<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /*<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * hostname specified by hostname config<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected String useThisHostnameInstead;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  // key to the config parameter of server hostname<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  // both master and region server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.441"></a>
+<span class="sourceLineNo">425</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * against  Master.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  protected ServerName serverName;<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /*<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * hostname specified by hostname config<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  protected String useThisHostnameInstead;<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  // key to the config parameter of server hostname<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  // both master and region server<a name="line.441"></a>
 <span class="sourceLineNo">442</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  // Exception will be thrown if both are used.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * This servers startcode.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  protected final long startcode;<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>   * Unique identifier for the cluster we are a part of.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  protected String clusterId;<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * MX Bean for RegionServerInfo<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private ObjectName mxBean = null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * Chore to clean periodically the moved region list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  // chore for refreshing store files for secondary regions<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  private StorefileRefresherChore storefileRefresher;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  private RegionServerCoprocessorHost rsHost;<a name="line.473"></a>
+<span class="sourceLineNo">443</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  // Exception will be thrown if both are used.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * This servers startcode.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  protected final long startcode;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Unique identifier for the cluster we are a part of.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected String clusterId;<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * MX Bean for RegionServerInfo<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private ObjectName mxBean = null;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Chore to clean periodically the moved region list<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  // chore for refreshing store files for secondary regions<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  private StorefileRefresherChore storefileRefresher;<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.475"></a>
+<span class="sourceLineNo">475</span>  private RegionServerCoprocessorHost rsHost;<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<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>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * HBASE-3787) are:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  final ServerNonceManager nonceManager;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private UserProvider userProvider;<a name="line.500"></a>
+<span class="sourceLineNo">477</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * HBASE-3787) are:<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  final ServerNonceManager nonceManager;<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected final RSRpcServices rpcServices;<a name="line.502"></a>
+<span class="sourceLineNo">502</span>  private UserProvider userProvider;<a name="line.502"></a>
 <span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  protected CoordinatedStateManager csm;<a name="line.504"></a>
+<span class="sourceLineNo">504</span>  protected final RSRpcServices rpcServices;<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  protected final ConfigurationManager configurationManager;<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @VisibleForTesting<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  private volatile ThroughputController flushThroughputController;<a name="line.515"></a>
+<span class="sourceLineNo">506</span>  protected CoordinatedStateManager csm;<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>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected final ConfigurationManager configurationManager;<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.517"></a>
+<span class="sourceLineNo">517</span>  private volatile ThroughputController flushThroughputController;<a name="line.517"></a>
 <span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  protected FileSystemUtilizationChore fsUtilizationChore;<a name="line.519"></a>
+<span class="sourceLineNo">519</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.519"></a>
 <span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<a name="line.521"></a>
+<span class="sourceLineNo">521</span>  protected FileSystemUtilizationChore fsUtilizationChore;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  private final boolean masterless;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * Starts a HRegionServer at the default location<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  // Don't start any services or managers in here in the Constructor.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    super("RegionServer");  // thread name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TraceUtil.initTracer(conf);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      this.startcode = System.currentTimeMillis();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.conf = conf;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.fsOk = true;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      HFile.checkHFileVersion(this.conf);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      checkCodecs(this.conf);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      decorateRegionServerConfiguration(this.conf);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Disable usage of meta replicas in the regionserver<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Config'ed params<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.561"></a>
+<span class="sourceLineNo">523</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  private final boolean masterless;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<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>   * Starts a HRegionServer at the default location<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  // Don't start any services or managers in here in the Constructor.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    super("RegionServer");  // thread name<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    TraceUtil.initTracer(conf);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      this.startcode = System.currentTimeMillis();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      this.conf = conf;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      this.fsOk = true;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      HFile.checkHFileVersion(this.conf);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      checkCodecs(this.conf);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      decorateRegionServerConfiguration(this.conf);<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // Disable usage of meta replicas in the regionserver<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      // Config'ed params<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.561"></a>
 <span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.566"></a>
+<span class="sourceLineNo">563</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>      this.abortRequested = false;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      this.stopped = false;<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>      rpcServices = createRpcServices();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      String hostName =<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              : this.useThisHostnameInstead;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>      // login the zookeeper client principal (if using security)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      // login the server principal (if using secure Hadoop)<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      login(userProvider, hostName);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      // init superusers and add the server principal (if using security)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      // or process owner as default super user.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      Superusers.initialize(conf);<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      cacheConfig = new CacheConfig(conf);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        }<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>      initializeFileSystem();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>      this.configurationManager = new ConfigurationManager();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        // Open connection to zookeeper and set primary watcher<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        if (!this.masterless) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>          masterAddressTracker.start();<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          clusterStatusTracker.start();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          masterAddressTracker = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          clusterStatusTracker = null;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        zooKeeper = null;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        masterAddressTracker = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        clusterStatusTracker = null;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      this.rpcServices.start(zooKeeper);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // class HRS. TODO.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      this.choreService = new ChoreService(getName(), true);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      this.executorService = new ExecutorService(getName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      putUpWebUI();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } catch (Throwable t) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // cause of failed startup is lost.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      LOG.error("Failed construction RegionServer", t);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw t;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  // HMaster should override this method to load the specific config for master<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        throw new IOException(msg);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        return rpcServices.isa.getHostName();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return hostname;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  /**<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * If running on Windows, do windows-specific setup.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        public void handle(Signal signal) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          conf.reloadConfiguration();<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          cm.notifyAllObservers(conf);<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>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    NettyEventLoopGroupConfig nelgc =<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      new NettyEventLoopGroupConfig(conf, "RS-EventLoopGroup");<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    NettyRpcClientConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    NettyAsyncFSWALConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    return nelgc;<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>  private void initializeFileSystem() throws IOException {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    // Get fs instance used by this RS.  Do we use checksum verification in the hbase? If hbase<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    // checksum verification enabled, then automatically switch off hdfs checksum verification.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    FSUtils.setFsDefault(this.conf, FSUtils.getWALRootDir(this.conf));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    this.walFs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this.walRootDir = FSUtils.getWALRootDir(this.conf);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    // Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // underlying hadoop hdfs accessors will be going against wrong filesystem<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    // (unless all is set to defaults).<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    this.fs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    this.rootDir = FSUtils.getRootDir(this.conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    this.tableDescriptors = getFsTableDescriptors();<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>  protected TableDescriptors getFsTableDescriptors() throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return new FSTableDescriptors(this.conf,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.fs, this.rootDir, !canUpdateTableDescriptor(), false, getMetaTableObserver());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return null;<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    user.login("hbase.regionserver.keytab.file",<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      "hbase.regionserver.kerberos.principal", host);<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>  protected void waitForMasterActive() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>  protected String getProcessName() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return REGIONSERVER;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  protected boolean canCreateBaseZNode() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.masterless;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  protected boolean canUpdateTableDescriptor() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    return false;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return new RSRpcServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  protected void configureInfoServer() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return RSDumpServlet.class;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    /*<a name="line.753"></a>
-<span class="sourceLineNo">754</span>     * No stacking of instances is allowed for a single executorService name<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.756"></a>
-<span class="sourceLineNo">757</span>        instance.getDescriptorForType();<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.760"></a>
-<span class="sourceLineNo">761</span>          + " already registered, rejecting request from " + instance);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return false;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    if (LOG.isDebugEnabled()) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return true;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * @throws IOException<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  @VisibleForTesting<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // and remote invocations.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      serverName, rpcServices, rpcServices);<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>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @param c<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @throws IOException<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    // check to see if the codec list is available:<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    if (codecs == null) return;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    for (String codec : codecs) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        throw new IOException("Compression codec " + codec +<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          " not supported, aborting RS construction");<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><a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public String getClusterId() {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    return this.clusterId;<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>   * Setup our cluster connection if not already initialized.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @throws IOException<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (clusterConnection == null) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      clusterConnection = createClusterConnection();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      metaTableLocator = new MetaTableLocator();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   */<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  private void preRegistrationInitialization() {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    try {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      initializeZooKeeper();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      setupClusterConnection();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      // Setup RPC client for master communication<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    } catch (Throwable t) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      // Call stop if error or process will stick around for ever since server<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // puts up non-daemon threads.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      this.rpcServices.stop();<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * &lt;p&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * Finally open long-living server short-circuit connection.<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    justification="cluster Id znode read would give us correct response")<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // Nothing to do in here if no Master in the mix.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (this.masterless) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // block until a master is available.  No point in starting up if no master<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // running.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // when ready.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.860"></a>
+<span class="sourceLineNo">568</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      this.abortRequested = false;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      this.stopped = false;<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      rpcServices = createRpcServices();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      String hostName =<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              : this.useThisHostnameInstead;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // login the zookeeper client principal (if using security)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      // login the server principal (if using secure Hadoop)<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      login(userProvider, hostName);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      // init superusers and add the server principal (if using security)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      // or process owner as default super user.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Superusers.initialize(conf);<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      cacheConfig = new CacheConfig(conf);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>        @Override<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      };<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>      initializeFileSystem();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this.configurationManager = new ConfigurationManager();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Open connection to zookeeper and set primary watcher<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        if (!this.masterless) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          masterAddressTracker.start();<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          clusterStatusTracker.start();<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          masterAddressTracker = null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          clusterStatusTracker = null;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        zooKeeper = null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        masterAddressTracker = null;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        clusterStatusTracker = null;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.rpcServices.start(zooKeeper);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      // class HRS. TODO.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      this.choreService = new ChoreService(getName(), true);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      this.executorService = new ExecutorService(getName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      putUpWebUI();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    } catch (Throwable t) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      // cause of failed startup is lost.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      LOG.error("Failed construction RegionServer", t);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      throw t;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  // HMaster should override this method to load the specific config for master<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.659"></a>
+<span class="sourceLineNo">660</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        throw new IOException(msg);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        return rpcServices.isa.getHostName();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      }<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    } else {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      return hostname;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * If running on Windows, do windows-specific setup.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        public void handle(Signal signal) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          conf.reloadConfiguration();<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          cm.notifyAllObservers(conf);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      });<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    }<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>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    NettyEventLoopGroupConfig nelgc =<a name="lin

<TRUNCATED>

[22/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index c8b113b..a97dfdc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -146,3486 +146,3511 @@
 <span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
 <span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.zookeeper.KeeperException;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.eclipse.jetty.server.Server;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.slf4j.Logger;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.slf4j.LoggerFactory;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>/**<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * run the cluster.  All others park themselves in their constructor until<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.224"></a>
-<span class="sourceLineNo">225</span> *<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.230"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * run the cluster.  All others park themselves in their constructor until<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> *<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.230"></a>
 <span class="sourceLineNo">231</span> *<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * @see org.apache.zookeeper.Watcher<a name="line.232"></a>
-<span class="sourceLineNo">233</span> */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@SuppressWarnings("deprecation")<a name="line.235"></a>
-<span class="sourceLineNo">236</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private static class InitializationMonitor extends HasThread {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     * true, do nothing otherwise.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public static final boolean HALT_DEFAULT = false;<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    private final HMaster master;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    private final long timeout;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    private final boolean haltOnTimeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    InitializationMonitor(HMaster master) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      super("MasterInitializationMonitor");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.master = master;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.setDaemon(true);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public void run() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          Thread.sleep(timeout);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          if (master.isInitialized()) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } else {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.276"></a>
-<span class="sourceLineNo">277</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            if (haltOnTimeout) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.280"></a>
-<span class="sourceLineNo">281</span>              System.exit(-1);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } catch (InterruptedException ie) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  //instance into web context.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  public static final String MASTER = "master";<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Manager and zk listener for master election<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private final ActiveMasterManager activeMasterManager;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  // Region server tracker<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  RegionServerTracker regionServerTracker;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Draining region server tracker<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private DrainingServerTracker drainingServerTracker;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Tracker for load balancer state<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Tracker for split and merge state<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for region normalizer state<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.308"></a>
+<span class="sourceLineNo">232</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * @see org.apache.zookeeper.Watcher<a name="line.234"></a>
+<span class="sourceLineNo">235</span> */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>@SuppressWarnings("deprecation")<a name="line.237"></a>
+<span class="sourceLineNo">238</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private static class InitializationMonitor extends HasThread {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.251"></a>
+<span class="sourceLineNo">252</span>     * true, do nothing otherwise.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>     */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public static final boolean HALT_DEFAULT = false;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    private final HMaster master;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    private final long timeout;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private final boolean haltOnTimeout;<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    InitializationMonitor(HMaster master) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super("MasterInitializationMonitor");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      this.master = master;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.setDaemon(true);<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>    @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public void run() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Thread.sleep(timeout);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          if (master.isInitialized()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          } else {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>            if (haltOnTimeout) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              System.exit(-1);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      } catch (InterruptedException ie) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  //instance into web context.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final String MASTER = "master";<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  // Manager and zk listener for master election<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private final ActiveMasterManager activeMasterManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  // Region server tracker<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  RegionServerTracker regionServerTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  // Draining region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private DrainingServerTracker drainingServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  // Tracker for load balancer state<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  //Tracker for master maintenance mode setting<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  // Tracker for split and merge state<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.311"></a>
 <span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private ClusterSchemaService clusterSchemaService;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    "hbase.master.wait.on.service.seconds";<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.317"></a>
+<span class="sourceLineNo">313</span>  // Tracker for region normalizer state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  //Tracker for master maintenance mode setting<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Metrics for the HMaster<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  final MetricsMaster metricsMaster;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  // file system manager for the master FS operations<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private MasterFileSystem fileSystemManager;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private MasterWalManager walManager;<a name="line.323"></a>
+<span class="sourceLineNo">319</span>  private ClusterSchemaService clusterSchemaService;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    "hbase.master.wait.on.service.seconds";<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // server manager to deal with region server info<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private volatile ServerManager serverManager;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // manager of assignment nodes in zookeeper<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private AssignmentManager assignmentManager;<a name="line.329"></a>
+<span class="sourceLineNo">325</span>  // Metrics for the HMaster<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  final MetricsMaster metricsMaster;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // file system manager for the master FS operations<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private MasterFileSystem fileSystemManager;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private MasterWalManager walManager;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // manager of replication<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  // server manager to deal with region server info<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private volatile ServerManager serverManager;<a name="line.332"></a>
 <span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // buffer for "fatal error" notices from region servers<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  // in the cluster. This is only used for assisting<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // operations/debugging.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // flag set after we become the active master (used for testing)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private volatile boolean activeMaster = false;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // flag set after we complete initialization once active<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.343"></a>
+<span class="sourceLineNo">334</span>  // manager of assignment nodes in zookeeper<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  private AssignmentManager assignmentManager;<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // manager of replication<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // buffer for "fatal error" notices from region servers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // in the cluster. This is only used for assisting<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // operations/debugging.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  // flag set after master services are started,<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // initialization may have not completed yet.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  volatile boolean serviceStarted = false;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // flag set after we complete assignMeta.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // Maximum time we should run balancer for<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private final int maxBlancingTime;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // Maximum percent of regions in transition when balancing<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private final double maxRitPercent;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final LockManager lockManager = new LockManager(this);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private LoadBalancer balancer;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private RegionNormalizer normalizer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private BalancerChore balancerChore;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private RegionNormalizerChore normalizerChore;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private ClusterStatusChore clusterStatusChore;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  CatalogJanitor catalogJanitorChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private LogCleaner logCleaner;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private HFileCleaner hfileCleaner;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private MobCompactionChore mobCompactChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // used to synchronize the mobCompactionStates<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  // save the information of mob compactions in tables.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  MasterCoprocessorHost cpHost;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private final boolean preLoadTableDescriptors;<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  // Time stamps for when a hmaster became active<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private long masterActiveTime;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private long masterFinishedInitializationTime;<a name="line.388"></a>
+<span class="sourceLineNo">345</span>  // flag set after we become the active master (used for testing)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private volatile boolean activeMaster = false;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // flag set after we complete initialization once active<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // flag set after master services are started,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  // initialization may have not completed yet.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  volatile boolean serviceStarted = false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // flag set after we complete assignMeta.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // Maximum time we should run balancer for<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private final int maxBlancingTime;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // Maximum percent of regions in transition when balancing<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final double maxRitPercent;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private final LockManager lockManager = new LockManager(this);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private LoadBalancer balancer;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private RegionNormalizer normalizer;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private BalancerChore balancerChore;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private RegionNormalizerChore normalizerChore;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ClusterStatusChore clusterStatusChore;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  CatalogJanitor catalogJanitorChore;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  private LogCleaner logCleaner;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private HFileCleaner hfileCleaner;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private MobCompactionChore mobCompactChore;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  // used to synchronize the mobCompactionStates<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // save the information of mob compactions in tables.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  MasterCoprocessorHost cpHost;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private final boolean preLoadTableDescriptors;<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final boolean masterCheckCompression;<a name="line.391"></a>
+<span class="sourceLineNo">390</span>  // Time stamps for when a hmaster became active<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private long masterActiveTime;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  //should we check encryption settings at master side, default true<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final boolean masterCheckEncryption;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private long masterFinishedInitializationTime;<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // monitor for snapshot of hbase tables<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  SnapshotManager snapshotManager;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // monitor for distributed procedures<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private MasterProcedureManagerHost mpmHost;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private volatile MasterQuotaManager quotaManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  private QuotaObserverChore quotaObserverChore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.407"></a>
+<span class="sourceLineNo">396</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final boolean masterCheckCompression;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  //should we check encryption settings at master side, default true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private final boolean masterCheckEncryption;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  // monitor for snapshot of hbase tables<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  SnapshotManager snapshotManager;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // monitor for distributed procedures<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private MasterProcedureManagerHost mpmHost;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private WALProcedureStore procedureStore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // handle table states<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private TableStateManager tableStateManager;<a name="line.413"></a>
+<span class="sourceLineNo">409</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private volatile MasterQuotaManager quotaManager;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private QuotaObserverChore quotaObserverChore;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.413"></a>
 <span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  private long splitPlanCount;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  private long mergePlanCount;<a name="line.416"></a>
+<span class="sourceLineNo">415</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  private WALProcedureStore procedureStore;<a name="line.416"></a>
 <span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /* Handle favored nodes information */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private FavoredNodesManager favoredNodesManager;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  // handle table states<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private TableStateManager tableStateManager;<a name="line.419"></a>
 <span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private Server masterJettyServer;<a name="line.422"></a>
+<span class="sourceLineNo">421</span>  private long splitPlanCount;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private long mergePlanCount;<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static class RedirectServlet extends HttpServlet {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    private final int regionServerInfoPort;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    private final String regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    /**<a name="line.429"></a>
-<span class="sourceLineNo">430</span>     * @param infoServer that we're trying to send all requests to<a name="line.430"></a>
-<span class="sourceLineNo">431</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       regionServerInfoPort = infoServer.getPort();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       regionServerHostname = hostname;<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>    @Override<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    public void doGet(HttpServletRequest request,<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      String redirectHost = regionServerHostname;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if(redirectHost == null) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        redirectHost = request.getServerName();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.447"></a>
-<span class="sourceLineNo">448</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              "to an appropriate hostname.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String redirectUrl = request.getScheme() + "://"<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        + request.getRequestURI();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      response.sendRedirect(redirectUrl);<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><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Initializes the HMaster. The steps are as follows:<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * &lt;p&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * &lt;ol&gt;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;/ol&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Remaining steps of initialization occur in<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * the master becomes the active one.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public HMaster(final Configuration conf)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      throws IOException, KeeperException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    super(conf);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    TraceUtil.initTracer(conf);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>      // Disable usage of meta replicas in the master<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>      decorateMasterConfiguration(this.conf);<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">424</span>  /* Handle favored nodes information */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private FavoredNodesManager favoredNodesManager;<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private Server masterJettyServer;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static class RedirectServlet extends HttpServlet {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    private final int regionServerInfoPort;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private final String regionServerHostname;<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>     * @param infoServer that we're trying to send all requests to<a name="line.436"></a>
+<span class="sourceLineNo">437</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>     */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       regionServerInfoPort = infoServer.getPort();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       regionServerHostname = hostname;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public void doGet(HttpServletRequest request,<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String redirectHost = regionServerHostname;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      if(redirectHost == null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        redirectHost = request.getServerName();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.453"></a>
+<span class="sourceLineNo">454</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              "to an appropriate hostname.");<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.457"></a>
+<span class="sourceLineNo">458</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          return;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      String redirectUrl = request.getScheme() + "://"<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        + request.getRequestURI();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      response.sendRedirect(redirectUrl);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Initializes the HMaster. The steps are as follows:<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * &lt;p&gt;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * &lt;ol&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;/ol&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Remaining steps of initialization occur in<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * the master becomes the active one.<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public HMaster(final Configuration conf)<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      throws IOException, KeeperException {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    super(conf);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    TraceUtil.initTracer(conf);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>      // Disable usage of meta replicas in the master<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>      decorateMasterConfiguration(this.conf);<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      // should we check encryption settings at master side, default true<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.503"></a>
+<span class="sourceLineNo">499</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // preload table descriptor at startup<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      // Do we publish the status?<a name="line.514"></a>
+<span class="sourceLineNo">505</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>      // should we check encryption settings at master side, default true<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.511"></a>
+<span class="sourceLineNo">512</span><a name="line.512"></a>
+<span class="sourceLineNo">513</span>      // preload table descriptor at startup<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.514"></a>
 <span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              ClusterStatusPublisher.Publisher.class);<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (shouldPublish) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (publisherClass == null) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.525"></a>
-<span class="sourceLineNo">526</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              " is not set - not publishing status");<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        } else {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      } else {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        this.activeMasterManager = null;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } catch (Throwable t) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // cause of failed startup is lost.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      LOG.error("Failed construction of Master", t);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      throw t;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  @Override<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  // block in here until then.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    try {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        try {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          int infoPort = putUpJettyServer();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          startActiveMasterManager(infoPort);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>        } catch (Throwable t) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          // Make sure we log the exception.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          String error = "Failed to become Active Master";<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          LOG.error(error, t);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          // Abort should have been called already.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          if (!isAborted()) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            abort(error, t);<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>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      // the super run call will do this for us.<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      super.run();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    } finally {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      if (this.clusterSchemaService != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        // If on way out, then we are no longer active master.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        this.clusterSchemaService.stopAsync();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        try {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          this.clusterSchemaService.awaitTerminated(<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        } catch (TimeoutException te) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  // return the actual infoPort, -1 means disable info server.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private int putUpJettyServer() throws IOException {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      return -1;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    // -1 is for disabling info server, so no redirecting<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return -1;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if(infoPort == infoServer.getPort()) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return infoPort;<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.606"></a>
-<span class="sourceLineNo">6

<TRUNCATED>

[37/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 102c74b..fc050a9 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Reactor Dependency Convergence</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -1095,7 +1095,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index b302ef8..f101223 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Dependency Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -303,7 +303,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index a0bc28e..fb5baf4 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependency Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -959,7 +959,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-frame.html b/devapidocs/allclasses-frame.html
index 776fee5..7965647 100644
--- a/devapidocs/allclasses-frame.html
+++ b/devapidocs/allclasses-frame.html
@@ -490,6 +490,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ClientSimpleScanner.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ClientSimpleScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot" target="classFrame">ClientSnapshotDescriptionUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">ClientUtil</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">ClientZKSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase" target="classFrame">ClockOutOfSyncException</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure" target="classFrame">CloneSnapshotProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/handler/CloseMetaHandler.html" title="class in org.apache.hadoop.hbase.regionserver.handler" target="classFrame">CloseMetaHandler</a></li>
@@ -1372,6 +1373,7 @@
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceHFileSplitterJob.html" title="class in org.apache.hadoop.hbase.backup.mapreduce" target="classFrame">MapReduceHFileSplitterJob</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceHFileSplitterJob.HFileCellMapper.html" title="class in org.apache.hadoop.hbase.backup.mapreduce" target="classFrame">MapReduceHFileSplitterJob.HFileCellMapper</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceRestoreJob.html" title="class in org.apache.hadoop.hbase.backup.mapreduce" target="classFrame">MapReduceRestoreJob</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">MasterAddressSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper" target="classFrame">MasterAddressTracker</a></li>
 <li><a href="org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">MasterAnnotationReadingPriorityFunction</a></li>
 <li><a href="org/apache/hadoop/hbase/client/MasterCallable.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">MasterCallable</a></li>
@@ -1447,6 +1449,7 @@
 <li><a href="org/apache/hadoop/hbase/codec/MessageCodec.MessageDecoder.html" title="class in org.apache.hadoop.hbase.codec" target="classFrame">MessageCodec.MessageDecoder</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/MessageCodec.MessageEncoder.html" title="class in org.apache.hadoop.hbase.codec" target="classFrame">MessageCodec.MessageEncoder</a></li>
 <li><a href="org/apache/hadoop/hbase/client/MetaCache.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">MetaCache</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">MetaLocationSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase" target="classFrame">MetaMutationAnnotation</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase" target="classFrame">MetaTableAccessor</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html" title="interface in org.apache.hadoop.hbase" target="classFrame"><span class="interfaceName">MetaTableAccessor.CloseableVisitor</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/devapidocs/allclasses-noframe.html b/devapidocs/allclasses-noframe.html
index 1ddf4f1..3ba57dc 100644
--- a/devapidocs/allclasses-noframe.html
+++ b/devapidocs/allclasses-noframe.html
@@ -490,6 +490,7 @@
 <li><a href="org/apache/hadoop/hbase/client/ClientSimpleScanner.html" title="class in org.apache.hadoop.hbase.client">ClientSimpleScanner</a></li>
 <li><a href="org/apache/hadoop/hbase/snapshot/ClientSnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot">ClientSnapshotDescriptionUtils</a></li>
 <li><a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client">ClientUtil</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase">ClockOutOfSyncException</a></li>
 <li><a href="org/apache/hadoop/hbase/master/procedure/CloneSnapshotProcedure.html" title="class in org.apache.hadoop.hbase.master.procedure">CloneSnapshotProcedure</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/handler/CloseMetaHandler.html" title="class in org.apache.hadoop.hbase.regionserver.handler">CloseMetaHandler</a></li>
@@ -1372,6 +1373,7 @@
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceHFileSplitterJob.html" title="class in org.apache.hadoop.hbase.backup.mapreduce">MapReduceHFileSplitterJob</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceHFileSplitterJob.HFileCellMapper.html" title="class in org.apache.hadoop.hbase.backup.mapreduce">MapReduceHFileSplitterJob.HFileCellMapper</a></li>
 <li><a href="org/apache/hadoop/hbase/backup/mapreduce/MapReduceRestoreJob.html" title="class in org.apache.hadoop.hbase.backup.mapreduce">MapReduceRestoreJob</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterAddressTracker</a></li>
 <li><a href="org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.html" title="class in org.apache.hadoop.hbase.master">MasterAnnotationReadingPriorityFunction</a></li>
 <li><a href="org/apache/hadoop/hbase/client/MasterCallable.html" title="class in org.apache.hadoop.hbase.client">MasterCallable</a></li>
@@ -1447,6 +1449,7 @@
 <li><a href="org/apache/hadoop/hbase/codec/MessageCodec.MessageDecoder.html" title="class in org.apache.hadoop.hbase.codec">MessageCodec.MessageDecoder</a></li>
 <li><a href="org/apache/hadoop/hbase/codec/MessageCodec.MessageEncoder.html" title="class in org.apache.hadoop.hbase.codec">MessageCodec.MessageEncoder</a></li>
 <li><a href="org/apache/hadoop/hbase/client/MetaCache.html" title="class in org.apache.hadoop.hbase.client">MetaCache</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaMutationAnnotation.html" title="annotation in org.apache.hadoop.hbase">MetaMutationAnnotation</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></li>
 <li><a href="org/apache/hadoop/hbase/MetaTableAccessor.CloseableVisitor.html" title="interface in org.apache.hadoop.hbase"><span class="interfaceName">MetaTableAccessor.CloseableVisitor</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 0c09a5e..a36a871 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -821,166 +821,194 @@
 <td class="colLast"><code>"clientPort"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.property.clientPort"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.observer.mode"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_QUORUM">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.quorum"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_DISTRIBUTED">
 <!--   -->
 </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/HConstants.html#CLUSTER_DISTRIBUTED">CLUSTER_DISTRIBUTED</a></code></td>
 <td class="colLast"><code>"hbase.cluster.distributed"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_ID_DEFAULT">
 <!--   -->
 </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/HConstants.html#CLUSTER_ID_DEFAULT">CLUSTER_ID_DEFAULT</a></code></td>
 <td class="colLast"><code>"default-cluster"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_ID_FILE_NAME">
 <!--   -->
 </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/HConstants.html#CLUSTER_ID_FILE_NAME">CLUSTER_ID_FILE_NAME</a></code></td>
 <td class="colLast"><code>"hbase.id"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_IS_LOCAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#CLUSTER_IS_LOCAL">CLUSTER_IS_LOCAL</a></code></td>
 <td class="colLast"><code>false</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX">
 <!--   -->
 </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/HConstants.html#COMPACTION_KV_MAX">COMPACTION_KV_MAX</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.kv.max"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX_DEFAULT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#COMPACTION_KV_MAX_DEFAULT">COMPACTION_KV_MAX_DEFAULT</a></code></td>
 <td class="colLast"><code>10</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CONFIGURATION">
 <!--   -->
 </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/HConstants.html#CONFIGURATION">CONFIGURATION</a></code></td>
 <td class="colLast"><code>"CONFIGURATION"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CORRUPT_DIR_NAME">
 <!--   -->
 </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/HConstants.html#CORRUPT_DIR_NAME">CORRUPT_DIR_NAME</a></code></td>
 <td class="colLast"><code>"corrupt"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_INCLUSION_KEY">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_INCLUSION_KEY">CP_HTD_ATTR_INCLUSION_KEY</a></code></td>
 <td class="colLast"><code>"hbase.coprocessor.classloader.included.classes"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></code></td>
 <td class="colLast"><code>"[^=,]+"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></code></td>
 <td class="colLast"><code>"[^,]+"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.alternate.key.algorithm"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_CIPHERPROVIDER_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_CIPHERPROVIDER_CONF_KEY">CRYPTO_CIPHERPROVIDER_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.cipherprovider"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEY_ALGORITHM_CONF_KEY">CRYPTO_KEY_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.key.algorithm"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEYPROVIDER_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEYPROVIDER_CONF_KEY">CRYPTO_KEYPROVIDER_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.keyprovider"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEYPROVIDER_PARAMETERS_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEYPROVIDER_PARAMETERS_KEY">CRYPTO_KEYPROVIDER_PARAMETERS_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.keyprovider.parameters"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.master.alternate.key.name"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_MASTERKEY_NAME_CONF_KEY">CRYPTO_MASTERKEY_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.master.key.name"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_WAL_ALGORITHM_CONF_KEY">CRYPTO_WAL_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.wal.algorithm"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_WAL_KEY_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_WAL_KEY_NAME_CONF_KEY">CRYPTO_WAL_KEY_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.wal.key.name"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DATA_FILE_UMASK_KEY">
 <!--   -->
 </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/HConstants.html#DATA_FILE_UMASK_KEY">DATA_FILE_UMASK_KEY</a></code></td>
 <td class="colLast"><code>"hbase.data.umask"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DAY_IN_SECONDS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#DAY_IN_SECONDS">DAY_IN_SECONDS</a></code></td>
 <td class="colLast"><code>86400</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_BLOCKSIZE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_BLOCKSIZE">DEFAULT_BLOCKSIZE</a></code></td>
 <td class="colLast"><code>65536</code></td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></code></td>
+<td class="colLast"><code>false</code></td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_CLUSTER_DISTRIBUTED">
 <!--   -->
@@ -1367,25 +1395,25 @@
 <td class="colLast"><code>90000</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT">
 <!--   -->
-</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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></code></td>
-<td class="colLast"><code>"/hbase"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></code></td>
+<td class="colLast"><code>2181</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></code></td>
-<td class="colLast"><code>2181</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></code></td>
+<td class="colLast"><code>300</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></code></td>
-<td class="colLast"><code>300</code></td>
+</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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></code></td>
+<td class="colLast"><code>"/hbase"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DELIMITER">
@@ -3740,21 +3768,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Wed Mar 28 14:41:56 UTC 2018"</code></td>
+<td class="colLast"><code>"Thu Mar 29 14:41:13 UTC 2018"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.revision">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#revision">revision</a></code></td>
-<td class="colLast"><code>"3b6199a27a944f9f05ca6512c59766ed0f590f48"</code></td>
+<td class="colLast"><code>"d8b550fabcacf3050583b514c4081adf5d087d65"</code></td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.Version.srcChecksum">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#srcChecksum">srcChecksum</a></code></td>
-<td class="colLast"><code>"20863c5ee3226f9f8eadc881825e7019"</code></td>
+<td class="colLast"><code>"ec0cf2f1817421bacb7059f6c5a503b2"</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/2a4c7d89/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index 35c8a90..0319465 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -12099,6 +12099,18 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/MetricsConnection.html#CLIENT_SVC">CLIENT_SVC</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/MetricsConnection.html" title="class in org.apache.hadoop.hbase.client">MetricsConnection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.CompletedProcedureRetainer.html#clientAckTime">clientAckTime</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.CompletedProcedureRetainer.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.CompletedProcedureRetainer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.html#clientAddress">clientAddress</a></span> - Variable in class org.apache.hadoop.hbase.monitoring.<a href="org/apache/hadoop/hbase/monitoring/MonitoredRPCHandlerImpl.html" title="class in org.apache.hadoop.hbase.monitoring">MonitoredRPCHandlerImpl</a></dt>
@@ -12196,6 +12208,23 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ClientUtil.html#ClientUtil--">ClientUtil()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ClientUtil.html" title="class in org.apache.hadoop.hbase.client">ClientUtil</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer</span></a> - Class in <a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></dt>
+<dd>
+<div class="block">Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if
+ changed
+ <p/>
+ The target znode(s) is given through <a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--"><code>ClientZKSyncer.getNodesToWatch()</code></a> method</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#ClientZKSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">ClientZKSyncer(ZKWatcher, ZKWatcher, Server)</a></span> - Constructor for class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer.ClientZkUpdater</span></a> - Class in <a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></dt>
+<dd>
+<div class="block">Thread to synchronize znode data to client ZK cluster</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#ClientZkUpdater-java.lang.String-java.util.concurrent.BlockingQueue-">ClientZkUpdater(String, BlockingQueue&lt;byte[]&gt;)</a></span> - Constructor for class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#clientZkWatcher">clientZkWatcher</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/ClockOutOfSyncException.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">ClockOutOfSyncException</span></a> - Exception in <a href="org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a></dt>
 <dd>
 <div class="block">This exception is thrown by the master when a region server clock skew is
@@ -22449,6 +22478,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.CompletedProcedureCleaner.html#DEFAULT_CLEANER_INTERVAL">DEFAULT_CLEANER_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/ProcedureExecutor.CompletedProcedureCleaner.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor.CompletedProcedureCleaner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLUSTER_DISTRIBUTED">DEFAULT_CLUSTER_DISTRIBUTED</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default value for cluster distributed mode</div>
@@ -23448,16 +23481,16 @@
 <dd>
 <div class="block">Default value for ZooKeeper session timeout</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default client port that the zookeeper listens on</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#defaultBandwidth">defaultBandwidth</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html#defaultBlockEncodingCtx">defaultBlockEncodingCtx</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/HFileBlock.Writer.html" title="class in org.apache.hadoop.hbase.io.hfile">HFileBlock.Writer</a></dt>
@@ -35655,6 +35688,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/ServerCall.html#getClientVersionInfo--">getClientVersionInfo()</a></span> - Method in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/ServerCall.html" title="class in org.apache.hadoop.hbase.ipc">ServerCall</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html#getClientZKQuorumServersString-org.apache.hadoop.conf.Configuration-">getClientZKQuorumServersString(Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKConfig.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig</a></dt>
+<dd>
+<div class="block">Get the client ZK Quorum servers string</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HStore.html#getCloseCheckInterval--">getCloseCheckInterval()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HStore.html" title="class in org.apache.hadoop.hbase.regionserver">HStore</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#getClosestRegionInfo-org.apache.hadoop.hbase.client.Connection-org.apache.hadoop.hbase.TableName-byte:A-">getClosestRegionInfo(Connection, TableName, byte[])</a></span> - Static method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
@@ -43134,6 +43171,12 @@
 <dd>
 <div class="block">Get the name of the current node from the specified fully-qualified path.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--">getNodesToWatch()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#getNodesToWatch--">getNodesToWatch()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#getNodesToWatch--">getNodesToWatch()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/Action.html#getNonce--">getNonce()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/Action.html" title="class in org.apache.hadoop.hbase.client">Action</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/NoncedRegionServerCallable.html#getNonce--">getNonce()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/NoncedRegionServerCallable.html" title="class in org.apache.hadoop.hbase.client">NoncedRegionServerCallable</a></dt>
@@ -62982,6 +63025,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ChoreService.html#isShutdown--">isShutdown()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html#isSilence--">isSilence()</a></span> - Method in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/LoadIncrementalHFiles.html" title="class in org.apache.hadoop.hbase.tool">LoadIncrementalHFiles</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/visibility/expression/ExpressionNode.html#isSingleNode--">isSingleNode()</a></span> - Method in interface org.apache.hadoop.hbase.security.visibility.expression.<a href="org/apache/hadoop/hbase/security/visibility/expression/ExpressionNode.html" title="interface in org.apache.hadoop.hbase.security.visibility.expression">ExpressionNode</a></dt>
@@ -67376,6 +67421,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TableStateManager.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/metrics/impl/GlobalMetricRegistriesAdapter.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.metrics.impl.<a href="org/apache/hadoop/hbase/metrics/impl/GlobalMetricRegistriesAdapter.html" title="class in org.apache.hadoop.hbase.metrics.impl">GlobalMetricRegistriesAdapter</a></dt>
@@ -69767,6 +69814,15 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#masterActiveTime">masterActiveTime</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#masterAddressSyncer">masterAddressSyncer</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MasterAddressSyncer</span></a> - Class in <a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></dt>
+<dd>
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#MasterAddressSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MasterAddressSyncer(ZKWatcher, ZKWatcher, Server)</a></span> - Constructor for class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#masterAddressTracker">masterAddressTracker</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">MasterAddressTracker</span></a> - Class in <a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></dt>
@@ -69778,6 +69834,8 @@
 <div class="block">Construct a master address listener with the specified
  <code>zookeeper</code> reference.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#masterAddressZNode">masterAddressZNode</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZNodePaths.html#masterAddressZNode">masterAddressZNode</a></span> - Variable in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/MasterAnnotationReadingPriorityFunction.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterAnnotationReadingPriorityFunction</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
@@ -71741,6 +71799,15 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#metaLocation">metaLocation</a></span> - Variable in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmplImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#metaLocationSyncer">metaLocationSyncer</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MetaLocationSyncer</span></a> - Class in <a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></dt>
+<dd>
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#MetaLocationSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MetaLocationSyncer(ZKWatcher, ZKWatcher, Server)</a></span> - Constructor for class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/MetaTableAccessor.html#METALOG">METALOG</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/MetaTableAccessor.html" title="class in org.apache.hadoop.hbase">MetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html#metaLookupPool">metaLookupPool</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/ConnectionImplementation.html" title="class in org.apache.hadoop.hbase.client">ConnectionImplementation</a></dt>
@@ -76079,6 +76146,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/RegionServerTracker.html#nodeCreated-java.lang.String-">nodeCreated(String)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeCreated-java.lang.String-">nodeCreated(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html#nodeCreated-java.lang.String-">nodeCreated(String)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html" title="class in org.apache.hadoop.hbase.replication">ReplicationTrackerZKImpl.OtherRegionServerWatcher</a></dt>
 <dd>
 <div class="block">Called when a new node has been created.</div>
@@ -76109,6 +76178,8 @@
 <dd>
 <div class="block">Override handler from <a href="org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>ZKListener</code></a></div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDataChanged-java.lang.String-">nodeDataChanged(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html#nodeDataChanged-java.lang.String-">nodeDataChanged(String)</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html" title="class in org.apache.hadoop.hbase.security.access">ZKPermissionWatcher</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html#nodeDataChanged-java.lang.String-">nodeDataChanged(String)</a></span> - Method in class org.apache.hadoop.hbase.security.token.<a href="org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a></dt>
@@ -76133,6 +76204,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/RegionServerTracker.html#nodeDeleted-java.lang.String-">nodeDeleted(String)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDeleted-java.lang.String-">nodeDeleted(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html#nodeDeleted-java.lang.String-">nodeDeleted(String)</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html" title="class in org.apache.hadoop.hbase.replication">ReplicationTrackerZKImpl.OtherRegionServerWatcher</a></dt>
 <dd>
 <div class="block">Called when a node has been deleted</div>
@@ -78479,6 +78552,8 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/snapshot/package-summary.html">org.apache.hadoop.hbase.master.snapshot</a> - package org.apache.hadoop.hbase.master.snapshot</dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> - package org.apache.hadoop.hbase.master.zksyncer</dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/metrics/package-summary.html">org.apache.hadoop.hbase.metrics</a> - package org.apache.hadoop.hbase.metrics</dt>
 <dd>
 <div class="block">Metrics API for HBase.</div>
@@ -85365,6 +85440,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/Queue.html#Queue-TKey-int-org.apache.hadoop.hbase.procedure2.LockStatus-">Queue(TKey, int, LockStatus)</a></span> - Constructor for class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/Queue.html" title="class in org.apache.hadoop.hbase.master.procedure">Queue</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#queue">queue</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.TimeoutExecutorThread.html#queue">queue</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.TimeoutExecutorThread.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.TimeoutExecutorThread</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TimeoutExecutorThread.html#queue">queue</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TimeoutExecutorThread.html" title="class in org.apache.hadoop.hbase.procedure2">TimeoutExecutorThread</a></dt>
@@ -85445,6 +85522,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/RpcExecutor.html#queues">queues</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/RpcExecutor.html" title="class in org.apache.hadoop.hbase.ipc">RpcExecutor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#queues">queues</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html#queues">queues</a></span> - Variable in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationSource.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationSource</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html#queueSize">queueSize</a></span> - Variable in class org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/FifoRpcScheduler.html" title="class in org.apache.hadoop.hbase.ipc">FifoRpcScheduler</a></dt>
@@ -87052,6 +87131,8 @@ service.</div>
 <dd>
 <div class="block">A private method used to re-establish a zookeeper session with a peer cluster.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#reconnectAfterExpiration--">reconnectAfterExpiration()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html#reconnectAfterExpiration--">reconnectAfterExpiration()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#reconnectAfterExpiration--">reconnectAfterExpiration()</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></dt>
@@ -95089,6 +95170,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/snapshot/SnapshotFileCache.RefreshCacheTask.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.master.snapshot.<a href="org/apache/hadoop/hbase/master/snapshot/SnapshotFileCache.RefreshCacheTask.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotFileCache.RefreshCacheTask</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/ExpiredMobFileCleaner.html#run-java.lang.String:A-">run(String[])</a></span> - Method in class org.apache.hadoop.hbase.mob.<a href="org/apache/hadoop/hbase/mob/ExpiredMobFileCleaner.html" title="class in org.apache.hadoop.hbase.mob">ExpiredMobFileCleaner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/MobFileCache.EvictionThread.html#run--">run()</a></span> - Method in class org.apache.hadoop.hbase.mob.<a href="org/apache/hadoop/hbase/mob/MobFileCache.EvictionThread.html" title="class in org.apache.hadoop.hbase.mob">MobFileCache.EvictionThread</a></dt>
@@ -97498,6 +97581,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/SplitLogManager.html#server">server</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/SplitLogManager.html" title="class in org.apache.hadoop.hbase.master">SplitLogManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#server">server</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html#server">server</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/CompactSplit.html" title="class in org.apache.hadoop.hbase.regionserver">CompactSplit</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html#server">server</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.handler.<a href="org/apache/hadoop/hbase/regionserver/handler/OpenRegionHandler.PostOpenDeployTasksThread.html" title="class in org.apache.hadoop.hbase.regionserver.handler">OpenRegionHandler.PostOpenDeployTasksThread</a></dt>
@@ -99189,6 +99274,10 @@ service.</div>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 <div class="block">Set data block encoding algorithm used in block cache.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#setDataForClientZkUntilSuccess-java.lang.String-byte:A-">setDataForClientZkUntilSuccess(String, byte[])</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>
+<div class="block">Set data for client ZK and retry until succeed.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html#setDataIndexCount-int-">setDataIndexCount(int)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/FixedFileTrailer.html" title="class in org.apache.hadoop.hbase.io.hfile">FixedFileTrailer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/RegionMetricsBuilder.html#setDataLocality-float-">setDataLocality(float)</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/RegionMetricsBuilder.html" title="class in org.apache.hadoop.hbase">RegionMetricsBuilder</a></dt>
@@ -103311,6 +103400,8 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/monitoring/TaskMonitor.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.monitoring.<a href="org/apache/hadoop/hbase/monitoring/TaskMonitor.html" title="class in org.apache.hadoop.hbase.monitoring">TaskMonitor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html#shutDown">shutDown</a></span> - Variable in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.RegionEnvironment.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionCoprocessorHost.RegionEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionCoprocessorHost.RegionEnvironment</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html#shutdown--">shutdown()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.RegionServerEnvironment.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost.RegionServerEnvironment</a></dt>
@@ -106245,6 +106336,10 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TableStateManager.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>
+<div class="block">Starts the syncer</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/NamespaceAuditor.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/NamespaceAuditor.html" title="class in org.apache.hadoop.hbase.namespace">NamespaceAuditor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/namespace/NamespaceStateManager.html#start--">start()</a></span> - Method in class org.apache.hadoop.hbase.namespace.<a href="org/apache/hadoop/hbase/namespace/NamespaceStateManager.html" title="class in org.apache.hadoop.hbase.namespace">NamespaceStateManager</a></dt>
@@ -116009,6 +116104,10 @@ service.</div>
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html#upsert-org.apache.hadoop.hbase.Cell-long-org.apache.hadoop.hbase.regionserver.MemStoreSizing-">upsert(Cell, long, MemStoreSizing)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/MutableSegment.html" title="class in org.apache.hadoop.hbase.regionserver">MutableSegment</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#upsertQueue-java.lang.String-byte:A-">upsertQueue(String, byte[])</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>
+<div class="block">Update the value of the single element in queue if any, or else insert.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/rest/client/RemoteHTable.Scanner.html#uri">uri</a></span> - Variable in class org.apache.hadoop.hbase.rest.client.<a href="org/apache/hadoop/hbase/rest/client/RemoteHTable.Scanner.html" title="class in org.apache.hadoop.hbase.rest.client">RemoteHTable.Scanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/Version.html#url">url</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/Version.html" title="class in org.apache.hadoop.hbase">Version</a></dt>
@@ -116475,6 +116574,14 @@ service.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/cleaner/LogCleaner.html#validate-org.apache.hadoop.fs.Path-">validate(Path)</a></span> - Method in class org.apache.hadoop.hbase.master.cleaner.<a href="org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">validate(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>
+<div class="block">Validate whether a znode path is watched by us</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#validate-java.lang.String-">validate(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#validate-java.lang.String-">validate(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.html#validate-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-org.apache.hadoop.conf.Configuration-">validate(SnapshotProtos.SnapshotDescription, Configuration)</a></span> - Static method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/SnapshotDescriptionUtils.html" title="class in org.apache.hadoop.hbase.snapshot">SnapshotDescriptionUtils</a></dt>
 <dd>
 <div class="block">Convert the passed snapshot description into a 'full' snapshot description based on default
@@ -119542,6 +119649,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/exceptions/PreemptiveFastFailException.html#wasOperationAttemptedByServer--">wasOperationAttemptedByServer()</a></span> - Method in exception org.apache.hadoop.hbase.exceptions.<a href="org/apache/hadoop/hbase/exceptions/PreemptiveFastFailException.html" title="class in org.apache.hadoop.hbase.exceptions">PreemptiveFastFailException</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#watchAndCheckExists-java.lang.String-">watchAndCheckExists(String)</a></span> - Method in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html#watchAndCheckExists-org.apache.hadoop.hbase.zookeeper.ZKWatcher-java.lang.String-">watchAndCheckExists(ZKWatcher, String)</a></span> - Static method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKUtil.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKUtil</a></dt>
 <dd>
 <div class="block">Watch the specified znode for delete/create/change events.</div>
@@ -121449,6 +121558,12 @@ the order they are declared.</div>
 <dd>
 <div class="block">Instantiate a ZooKeeper connection and watcher.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-boolean-">ZKWatcher(Configuration, String, Abortable, boolean, boolean)</a></span> - Constructor for class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></dt>
+<dd>
+<div class="block">Instantiate a ZooKeeper connection and watcher.</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#znode">znode</a></span> - Variable in class org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html#znode">znode</a></span> - Variable in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/Canary.ZookeeperMonitor.html" title="class in org.apache.hadoop.hbase.tool">Canary.ZookeeperMonitor</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html#znode">znode</a></span> - Variable in class org.apache.hadoop.hbase.tool.<a href="org/apache/hadoop/hbase/tool/Canary.ZookeeperTask.html" title="class in org.apache.hadoop.hbase.tool">Canary.ZookeeperTask</a></dt>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index 6d39492..7b9f77e 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -321,7 +321,7 @@ for more details.</p>
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index 6329e26..b05a9bd 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBaseâ„¢ Home</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -425,7 +425,7 @@ Apache HBase is an open-source, distributed, versioned, non-relational database
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

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

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 15c4e8a..e8eccc9 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Mailing Lists</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -331,7 +331,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index 12fca30..fc41f62 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -449,7 +449,7 @@ export HBASE_REGIONSERVER_OPTS=&quot;$HBASE_JMX_OPTS -Dcom.sun.management.jmxrem
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index a705db6..837101d 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -404,7 +404,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index 624859d..73c948b 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Plugin Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index a78e405..6edade1 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Powered By Apache HBase™</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -759,7 +759,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index bbebaca..6dbf538 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Information</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -325,7 +325,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index f621d56..33fe6a3 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Generated Reports</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -295,7 +295,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index b4be39e..40ff901 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Summary</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/pseudo-distributed.html
----------------------------------------------------------------------
diff --git a/pseudo-distributed.html b/pseudo-distributed.html
index 6f3de15..4e3fcf4 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
 Running Apache HBase (TM) in pseudo-distributed mode
@@ -298,7 +298,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 5c04a70..8e09c01 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -293,7 +293,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index 16bbb2f..83b0a58 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Other Apache HBase (TM) Resources</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -321,7 +321,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index f533814b..00a15f9 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Source Code Management</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -289,7 +289,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 1aa48e8..bc27825 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase™ Sponsors</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -323,7 +323,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index af1d026..7ba0285 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Supporting Projects</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -510,7 +510,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 4556151..17f8cda 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Team</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -720,7 +720,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 813fbda..867028c 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1951,6 +1951,7 @@
 <li><a href="org/apache/hadoop/hbase/io/hfile/TestSeekTo.html" title="class in org.apache.hadoop.hbase.io.hfile" target="classFrame">TestSeekTo</a></li>
 <li><a href="org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding" target="classFrame">TestSeekToBlockWithEncoders</a></li>
 <li><a href="org/apache/hadoop/hbase/io/asyncfs/TestSendBufSizePredictor.html" title="class in org.apache.hadoop.hbase.io.asyncfs" target="classFrame">TestSendBufSizePredictor</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestSeparateClientZKCluster</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal" target="classFrame">TestSequenceIdAccounting</a></li>
 <li><a href="org/apache/hadoop/hbase/TestSequenceIdMonotonicallyIncreasing.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestSequenceIdMonotonicallyIncreasing</a></li>
 <li><a href="org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase" target="classFrame">TestSerialization</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 3332e61..213f62d 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1951,6 +1951,7 @@
 <li><a href="org/apache/hadoop/hbase/io/hfile/TestSeekTo.html" title="class in org.apache.hadoop.hbase.io.hfile">TestSeekTo</a></li>
 <li><a href="org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding">TestSeekToBlockWithEncoders</a></li>
 <li><a href="org/apache/hadoop/hbase/io/asyncfs/TestSendBufSizePredictor.html" title="class in org.apache.hadoop.hbase.io.asyncfs">TestSendBufSizePredictor</a></li>
+<li><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></li>
 <li><a href="org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestSequenceIdAccounting</a></li>
 <li><a href="org/apache/hadoop/hbase/TestSequenceIdMonotonicallyIncreasing.html" title="class in org.apache.hadoop.hbase">TestSequenceIdMonotonicallyIncreasing</a></li>
 <li><a href="org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase">TestSerialization</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/constant-values.html b/testdevapidocs/constant-values.html
index 0c635fd..f88ba74 100644
--- a/testdevapidocs/constant-values.html
+++ b/testdevapidocs/constant-values.html
@@ -3895,6 +3895,25 @@
 </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.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</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.client.TestSeparateClientZKCluster.ZK_SESSION_TIMEOUT">
+<!--   -->
+</a><code>private&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#ZK_SESSION_TIMEOUT">ZK_SESSION_TIMEOUT</a></code></td>
+<td class="colLast"><code>5000</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.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</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/2a4c7d89/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 153f794..b0109d6 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -1067,6 +1067,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.html#after_zzz">after_zzz</a></span> - Static variable in class org.apache.hadoop.hbase.mapred.<a href="org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapred">TestTableSnapshotInputFormat</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#afterAllTests--">afterAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.html#afterAllTests--">afterAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.master.normalizer.<a href="org/apache/hadoop/hbase/master/normalizer/TestSimpleRegionNormalizerOnCluster.html" title="class in org.apache.hadoop.hbase.master.normalizer">TestSimpleRegionNormalizerOnCluster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html#afterAllTests--">afterAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestDeleteColumnFamilyProcedureFromClient.html" title="class in org.apache.hadoop.hbase.master.procedure">TestDeleteColumnFamilyProcedureFromClient</a></dt>
@@ -2341,6 +2343,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/trace/TestHTraceHooks.html#before--">before()</a></span> - Static method in class org.apache.hadoop.hbase.trace.<a href="org/apache/hadoop/hbase/trace/TestHTraceHooks.html" title="class in org.apache.hadoop.hbase.trace">TestHTraceHooks</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#beforeAllTests--">beforeAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase.html#beforeAllTests--">beforeAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/BalancerTestBase.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerTestBase</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html#beforeAllTests--">beforeAllTests()</a></span> - Static method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestBaseLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestBaseLoadBalancer</a></dt>
@@ -4355,6 +4359,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client">TestScanWithoutFetchingData</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerLoadDurability.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></dt>
@@ -6695,6 +6701,10 @@
 <dd>
 <div class="block">Tag a test as related to the client.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#clientZkCluster">clientZkCluster</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#clientZkDir">clientZkDir</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#clone-org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.FlushDescriptor-long-">clone(WALProtos.FlushDescriptor, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.html#cloneAndAssertOneRetry-java.lang.String-org.apache.hadoop.hbase.TableName-">cloneAndAssertOneRetry(String, TableName)</a></span> - Method in class org.apache.hadoop.hbase.snapshot.<a href="org/apache/hadoop/hbase/snapshot/TestSnapshotClientRetries.html" title="class in org.apache.hadoop.hbase.snapshot">TestSnapshotClientRetries</a></dt>
@@ -13563,6 +13573,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide2</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#family">family</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerLoadDurability.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSizeFailures.html#FAMILY">FAMILY</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></dt>
@@ -22647,6 +22659,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSizeFailures.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSmallReversedScanner.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSmallReversedScanner.html" title="class in org.apache.hadoop.hbase.client">TestSmallReversedScanner</a></dt>
@@ -25765,6 +25779,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#name">name</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestShortCircuitConnection.html" title="class in org.apache.hadoop.hbase.client">TestShortCircuitConnection</a></dt>
@@ -26443,6 +26459,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncProcess.CountingThreadFactory.html#newThread-java.lang.Runnable-">newThread(Runnable)</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncProcess.CountingThreadFactory.html" title="class in org.apache.hadoop.hbase.client">TestAsyncProcess.CountingThreadFactory</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#newVal">newVal</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html#newWAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-org.apache.hadoop.conf.Configuration-java.util.List-boolean-java.lang.String-java.lang.String-">newWAL(FileSystem, Path, String, String, Configuration, List&lt;WALActionsListener&gt;, boolean, String, String)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/AbstractTestFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">AbstractTestFSWAL</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWAL.html#newWAL-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-java.lang.String-java.lang.String-org.apache.hadoop.conf.Configuration-java.util.List-boolean-java.lang.String-java.lang.String-">newWAL(FileSystem, Path, String, String, Configuration, List&lt;WALActionsListener&gt;, boolean, String, String)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestAsyncFSWAL.html" title="class in org.apache.hadoop.hbase.regionserver.wal">TestAsyncFSWAL</a></dt>
@@ -30760,6 +30778,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#qualifier">qualifier</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/TestRefreshHFilesEndpoint.html" title="class in org.apache.hadoop.hbase.coprocessor.example">TestRefreshHFilesEndpoint</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/example/TestValueReplacingCompaction.html#QUALIFIER">QUALIFIER</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/TestValueReplacingCompaction.html" title="class in org.apache.hadoop.hbase.coprocessor.example">TestValueReplacingCompaction</a></dt>
@@ -32858,6 +32878,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#row">row</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/example/WriteHeavyIncrementObserverTestBase.html#ROW">ROW</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/WriteHeavyIncrementObserverTestBase.html" title="class in org.apache.hadoop.hbase.coprocessor.example">WriteHeavyIncrementObserverTestBase</a></dt>
@@ -42182,6 +42204,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client">TestScannerTimeout</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestServerBusyException.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSizeFailures.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></dt>
@@ -43608,6 +43632,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestAsyncTable.html#TestAsyncTable--">TestAsyncTable()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestAsyncTable.html" title="class in org.apache.hadoop.hbase.client">TestAsyncTable</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#testAsyncTable--">testAsyncTable()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/client/TestAsyncTableAdminApi.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestAsyncTableAdminApi</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
 <dd>
 <div class="block">Class to test asynchronous table admin operations.</div>
@@ -44096,6 +44122,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestResult.html#testBasicLoadValue--">testBasicLoadValue()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestResult.html" title="class in org.apache.hadoop.hbase.client">TestResult</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#testBasicOperation--">testBasicOperation()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.html#testBasicRegionPlacementAndReplicaLoad--">testBasicRegionPlacementAndReplicaLoad()</a></span> - Method in class org.apache.hadoop.hbase.master.balancer.<a href="org/apache/hadoop/hbase/master/balancer/TestFavoredStochasticLoadBalancer.html" title="class in org.apache.hadoop.hbase.master.balancer">TestFavoredStochasticLoadBalancer</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html#testBasicRegionSizeReports--">testBasicRegionSizeReports()</a></span> - Method in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestRegionSizeUse.html" title="class in org.apache.hadoop.hbase.quotas">TestRegionSizeUse</a></dt>
@@ -52302,6 +52330,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.html#testMasterInitializedEvent--">testMasterInitializedEvent()</a></span> - Method in class org.apache.hadoop.hbase.master.procedure.<a href="org/apache/hadoop/hbase/master/procedure/TestMasterProcedureEvents.html" title="class in org.apache.hadoop.hbase.master.procedure">TestMasterProcedureEvents</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterNoCluster.html#testMasterInitWithObserverModeClientZKQuorum--">testMasterInitWithObserverModeClientZKQuorum()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterNoCluster.html" title="class in org.apache.hadoop.hbase.master">TestMasterNoCluster</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterNoCluster.html#testMasterInitWithSameClientServerZKQuorum--">testMasterInitWithSameClientServerZKQuorum()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterNoCluster.html" title="class in org.apache.hadoop.hbase.master">TestMasterNoCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html#testMasterKeyRotation--">testMasterKeyRotation()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestEncryptionKeyRotation.html" title="class in org.apache.hadoop.hbase.regionserver">TestEncryptionKeyRotation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/locking/TestLockManager.html#testMasterLockAcquire--">testMasterLockAcquire()</a></span> - Method in class org.apache.hadoop.hbase.master.locking.<a href="org/apache/hadoop/hbase/master/locking/TestLockManager.html" title="class in org.apache.hadoop.hbase.master.locking">TestLockManager</a></dt>
@@ -52465,6 +52497,8 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterStatusServlet.html#TestMasterStatusServlet--">TestMasterStatusServlet()</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterStatusServlet.html" title="class in org.apache.hadoop.hbase.master">TestMasterStatusServlet</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#testMasterSwitch--">testMasterSwitch()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/TestMasterTransitions.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMasterTransitions</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
 <dd>
 <div class="block">Test transitions of state across the master.</div>
@@ -52740,8 +52774,12 @@
 </dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#testMetaLookupThreadPoolCreated--">testMetaLookupThreadPoolCreated()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMetaWithReplicas.html" title="class in org.apache.hadoop.hbase.client">TestMetaWithReplicas</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#testMetaMoveDuringClientZkClusterRestart--">testMetaMoveDuringClientZkClusterRestart()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMetaReaderGetColumnMethods--">testMetaReaderGetColumnMethods()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#testMetaRegionMove--">testMetaRegionMove()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html#testMetaScanner--">testMetaScanner()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestMetaTableAccessor.html" title="class in org.apache.hadoop.hbase">TestMetaTableAccessor</a></dt>
 <dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/master/TestMetaShutdownHandler.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMetaShutdownHandler</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
@@ -59024,6 +59062,10 @@
 <dd>
 <div class="block">Make sure we call cleanup etc, when we have an exception during prepare.</div>
 </dd>
+<dt><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestSeparateClientZKCluster</span></a> - Class in <a href="org/apache/hadoop/hbase/client/package-summary.html">org.apache.hadoop.hbase.client</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#TestSeparateClientZKCluster--">TestSeparateClientZKCluster()</a></span> - Constructor for class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html#testSeqIdComparator--">testSeqIdComparator()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHStoreFile.html" title="class in org.apache.hadoop.hbase.regionserver">TestHStoreFile</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html#testSeqIdsFromReplay--">testSeqIdsFromReplay()</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestHRegionReplayEvents.html" title="class in org.apache.hadoop.hbase.regionserver">TestHRegionReplayEvents</a></dt>
@@ -64895,6 +64937,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#VALUE">VALUE</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestScannersFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestScannersFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#value">value</a></span> - Variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/constraint/CheckConfigurationConstraint.html#value">value</a></span> - Static variable in class org.apache.hadoop.hbase.constraint.<a href="org/apache/hadoop/hbase/constraint/CheckConfigurationConstraint.html" title="class in org.apache.hadoop.hbase.constraint">CheckConfigurationConstraint</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/coprocessor/example/TestValueReplacingCompaction.html#value">value</a></span> - Static variable in class org.apache.hadoop.hbase.coprocessor.example.<a href="org/apache/hadoop/hbase/coprocessor/example/TestValueReplacingCompaction.html" title="class in org.apache.hadoop.hbase.coprocessor.example">TestValueReplacingCompaction</a></dt>
@@ -67217,6 +67261,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html#ZK_MAX_COUNT">ZK_MAX_COUNT</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateBasic</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#ZK_SESSION_TIMEOUT">ZK_SESSION_TIMEOUT</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html#ZK_SLEEP_INTERVAL">ZK_SLEEP_INTERVAL</a></span> - Static variable in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/TestReplicationStateBasic.html" title="class in org.apache.hadoop.hbase.replication">TestReplicationStateBasic</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html#zkClientPort">zkClientPort</a></span> - Variable in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/ProcessBasedLocalHBaseCluster.html" title="class in org.apache.hadoop.hbase.util">ProcessBasedLocalHBaseCluster</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html
index 4734100..2383d35 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseClusterRegionServer.html
@@ -262,7 +262,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedure
 Complete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, rem
 oteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html
index 5c7434d..fe74648 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestClientOperationTimeout.DelayedRegionServer.html
@@ -230,7 +230,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseC
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeReg
 ion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplet
 e, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
index edb3c21..caf8f2f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
@@ -239,7 +239,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unassign, update
 Configuration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unas
 sign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html
index 5c2e393..2559f40 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHRegionServer.html
@@ -231,7 +231,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseC
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedure
 Complete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, rem
 oteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html
index f10cb30..0ec1266 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestMovedRegionsCleaner.TestMockRegionServer.html
@@ -234,7 +234,7 @@ extends <a href="../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBaseC
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeRegion, reportFileArchivalFor
 Quotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeRegion, reportFil
 eArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

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


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
index 6eadb58..d74aa78 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
@@ -124,507 +124,542 @@
 <span class="sourceLineNo">116</span>  public ZKWatcher(Configuration conf, String identifier,<a name="line.116"></a>
 <span class="sourceLineNo">117</span>                   Abortable abortable, boolean canCreateBaseZNode)<a name="line.117"></a>
 <span class="sourceLineNo">118</span>  throws IOException, ZooKeeperConnectionException {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    this.conf = conf;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    this.prefix = identifier;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    // Identifier will get the sessionid appended later below down when we<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    // handle the syncconnect event.<a name="line.123"></a>
-<span class="sourceLineNo">124</span>    this.identifier = identifier + "0x0";<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    this.abortable = abortable;<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    PendingWatcher pendingWatcher = new PendingWatcher();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, identifier);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    pendingWatcher.prepare(this);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    if (canCreateBaseZNode) {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      try {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        createBaseZNodes();<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      } catch (ZooKeeperConnectionException zce) {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        try {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>          this.recoverableZooKeeper.close();<a name="line.135"></a>
-<span class="sourceLineNo">136</span>        } catch (InterruptedException ie) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>          LOG.debug("Encountered InterruptedException when closing " + this.recoverableZooKeeper);<a name="line.137"></a>
-<span class="sourceLineNo">138</span>          Thread.currentThread().interrupt();<a name="line.138"></a>
-<span class="sourceLineNo">139</span>        }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>        throw zce;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      }<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    try {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      // Create all the necessary "directories" of znodes<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      ZKUtil.createWithParents(this, znodePaths.baseZNode);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      ZKUtil.createAndFailSilent(this, znodePaths.rsZNode);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      ZKUtil.createAndFailSilent(this, znodePaths.drainingZNode);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableZNode);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      ZKUtil.createAndFailSilent(this, znodePaths.splitLogZNode);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      ZKUtil.createAndFailSilent(this, znodePaths.backupMasterAddressesZNode);<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableLockZNode);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      ZKUtil.createAndFailSilent(this, znodePaths.masterMaintZNode);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    } catch (KeeperException e) {<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      throw new ZooKeeperConnectionException(<a name="line.157"></a>
-<span class="sourceLineNo">158</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * perms.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   */<a name="line.167"></a>
-<span class="sourceLineNo">168</span>  public void checkAndSetZNodeAcls() {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      LOG.info("not a secure deployment, proceeding");<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      return;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span><a name="line.173"></a>
-<span class="sourceLineNo">174</span>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    // correct.<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    try {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(znodePaths.baseZNode, new Stat());<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>        LOG.info("setting znode ACLs");<a name="line.180"></a>
-<span class="sourceLineNo">181</span>        setZnodeAclsRecursive(znodePaths.baseZNode);<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    } catch(InterruptedException ie) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      interruptedExceptionNoThrow(ie, false);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>    } catch (IOException|KeeperException e) {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<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>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * will be set last in case the master fails in between.<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * @param znode the ZNode to set the permissions for<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.198"></a>
-<span class="sourceLineNo">199</span><a name="line.199"></a>
-<span class="sourceLineNo">200</span>    for (String child : children) {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      setZnodeAclsRecursive(ZNodePaths.joinZNode(znode, child));<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    }<a name="line.202"></a>
-<span class="sourceLineNo">203</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<a name="line.205"></a>
-<span class="sourceLineNo">206</span>  }<a name="line.206"></a>
-<span class="sourceLineNo">207</span><a name="line.207"></a>
-<span class="sourceLineNo">208</span>  /**<a name="line.208"></a>
-<span class="sourceLineNo">209</span>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * @param acls acls from zookeeper<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @return whether ACLs are set for the base znode<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @throws IOException if getting the current user fails<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
-<span class="sourceLineNo">214</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    if (LOG.isDebugEnabled()) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      LOG.debug("Checking znode ACLs");<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    }<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // Check whether ACL set for all superusers<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      return false;<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>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // configured via JAAS<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.226"></a>
-<span class="sourceLineNo">227</span><a name="line.227"></a>
-<span class="sourceLineNo">228</span>    if (acls.isEmpty()) {<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (LOG.isDebugEnabled()) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        LOG.debug("ACL is empty");<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      }<a name="line.231"></a>
-<span class="sourceLineNo">232</span>      return false;<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">119</span>    this(conf, identifier, abortable, canCreateBaseZNode, false);<a name="line.119"></a>
+<span class="sourceLineNo">120</span>  }<a name="line.120"></a>
+<span class="sourceLineNo">121</span><a name="line.121"></a>
+<span class="sourceLineNo">122</span>  /**<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * Instantiate a ZooKeeper connection and watcher.<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @param conf the configuration to use<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param identifier string that is passed to RecoverableZookeeper to be used as identifier for<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   *          this instance. Use null for default.<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   * @param abortable Can be null if there is on error there is no host to abort: e.g. client<a name="line.127"></a>
+<span class="sourceLineNo">128</span>   *          context.<a name="line.128"></a>
+<span class="sourceLineNo">129</span>   * @param canCreateBaseZNode true if a base ZNode can be created<a name="line.129"></a>
+<span class="sourceLineNo">130</span>   * @param clientZK whether this watcher is set to access client ZK<a name="line.130"></a>
+<span class="sourceLineNo">131</span>   * @throws IOException if the connection to ZooKeeper fails<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * @throws ZooKeeperConnectionException if the connection to Zookeeper fails when create base<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   *           ZNodes<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public ZKWatcher(Configuration conf, String identifier, Abortable abortable,<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      boolean canCreateBaseZNode, boolean clientZK)<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      throws IOException, ZooKeeperConnectionException {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.conf = conf;<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    if (clientZK) {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      String clientZkQuorumServers = ZKConfig.getClientZKQuorumServersString(conf);<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      String serverZkQuorumServers = ZKConfig.getZKQuorumServersString(conf);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      if (clientZkQuorumServers != null) {<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        if (clientZkQuorumServers.equals(serverZkQuorumServers)) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          // Don't allow same settings to avoid dead loop when master trying<a name="line.144"></a>
+<span class="sourceLineNo">145</span>          // to sync meta information from server ZK to client ZK<a name="line.145"></a>
+<span class="sourceLineNo">146</span>          throw new IllegalArgumentException(<a name="line.146"></a>
+<span class="sourceLineNo">147</span>              "The quorum settings for client ZK should be different from those for server");<a name="line.147"></a>
+<span class="sourceLineNo">148</span>        }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        this.quorum = clientZkQuorumServers;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      } else {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        this.quorum = serverZkQuorumServers;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    } else {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      this.quorum = ZKConfig.getZKQuorumServersString(conf);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    this.prefix = identifier;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    // Identifier will get the sessionid appended later below down when we<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // handle the syncconnect event.<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    this.identifier = identifier + "0x0";<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    this.abortable = abortable;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    this.znodePaths = new ZNodePaths(conf);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    PendingWatcher pendingWatcher = new PendingWatcher();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    this.recoverableZooKeeper = ZKUtil.connect(conf, quorum, pendingWatcher, identifier);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    pendingWatcher.prepare(this);<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    if (canCreateBaseZNode) {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      try {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        createBaseZNodes();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      } catch (ZooKeeperConnectionException zce) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        try {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          this.recoverableZooKeeper.close();<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        } catch (InterruptedException ie) {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          LOG.debug("Encountered InterruptedException when closing " + this.recoverableZooKeeper);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>          Thread.currentThread().interrupt();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>        }<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        throw zce;<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>  }<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>  private void createBaseZNodes() throws ZooKeeperConnectionException {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      // Create all the necessary "directories" of znodes<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      ZKUtil.createWithParents(this, znodePaths.baseZNode);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      ZKUtil.createAndFailSilent(this, znodePaths.rsZNode);<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      ZKUtil.createAndFailSilent(this, znodePaths.drainingZNode);<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableZNode);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      ZKUtil.createAndFailSilent(this, znodePaths.splitLogZNode);<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      ZKUtil.createAndFailSilent(this, znodePaths.backupMasterAddressesZNode);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      ZKUtil.createAndFailSilent(this, znodePaths.tableLockZNode);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      ZKUtil.createAndFailSilent(this, znodePaths.masterMaintZNode);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>    } catch (KeeperException e) {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      throw new ZooKeeperConnectionException(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>          prefix("Unexpected KeeperException creating base node"), e);<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>  }<a name="line.195"></a>
+<span class="sourceLineNo">196</span><a name="line.196"></a>
+<span class="sourceLineNo">197</span>  /**<a name="line.197"></a>
+<span class="sourceLineNo">198</span>   * On master start, we check the znode ACLs under the root directory and set the ACLs properly<a name="line.198"></a>
+<span class="sourceLineNo">199</span>   * if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * so that the existing znodes created with open permissions are now changed with restrictive<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * perms.<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   */<a name="line.202"></a>
+<span class="sourceLineNo">203</span>  public void checkAndSetZNodeAcls() {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    if (!ZKUtil.isSecureZooKeeper(getConfiguration())) {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      LOG.info("not a secure deployment, proceeding");<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      return;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    }<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>    // Check the base znodes permission first. Only do the recursion if base znode's perms are not<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // correct.<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    try {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      List&lt;ACL&gt; actualAcls = recoverableZooKeeper.getAcl(znodePaths.baseZNode, new Stat());<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      if (!isBaseZnodeAclSetup(actualAcls)) {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>        LOG.info("setting znode ACLs");<a name="line.215"></a>
+<span class="sourceLineNo">216</span>        setZnodeAclsRecursive(znodePaths.baseZNode);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      }<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    } catch(KeeperException.NoNodeException nne) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      return;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    } catch(InterruptedException ie) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      interruptedExceptionNoThrow(ie, false);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    } catch (IOException|KeeperException e) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      LOG.warn("Received exception while checking and setting zookeeper ACLs", e);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>  }<a name="line.225"></a>
+<span class="sourceLineNo">226</span><a name="line.226"></a>
+<span class="sourceLineNo">227</span>  /**<a name="line.227"></a>
+<span class="sourceLineNo">228</span>   * Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * will be set last in case the master fails in between.<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param znode the ZNode to set the permissions for<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  private void setZnodeAclsRecursive(String znode) throws KeeperException, InterruptedException {<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    List&lt;String&gt; children = recoverableZooKeeper.getChildren(znode, false);<a name="line.233"></a>
 <span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>    for (ACL acl : acls) {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      int perms = acl.getPerms();<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      Id id = acl.getId();<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      // and one for the hbase user<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>        if (perms != Perms.READ) {<a name="line.241"></a>
-<span class="sourceLineNo">242</span>          if (LOG.isDebugEnabled()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.243"></a>
-<span class="sourceLineNo">244</span>              id, perms, Perms.READ));<a name="line.244"></a>
-<span class="sourceLineNo">245</span>          }<a name="line.245"></a>
-<span class="sourceLineNo">246</span>          return false;<a name="line.246"></a>
-<span class="sourceLineNo">247</span>        }<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        if (perms != Perms.ALL) {<a name="line.249"></a>
-<span class="sourceLineNo">250</span>          if (LOG.isDebugEnabled()) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.251"></a>
-<span class="sourceLineNo">252</span>              id, perms, Perms.ALL));<a name="line.252"></a>
-<span class="sourceLineNo">253</span>          }<a name="line.253"></a>
-<span class="sourceLineNo">254</span>          return false;<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        }<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      } else if ("sasl".equals(id.getScheme())) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        String name = id.getId();<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        // If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname<a name="line.258"></a>
-<span class="sourceLineNo">259</span>        Matcher match = NAME_PATTERN.matcher(name);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        if (match.matches()) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>          name = match.group(1);<a name="line.261"></a>
-<span class="sourceLineNo">262</span>        }<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        if (name.equals(hbaseUser)) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>          if (perms != Perms.ALL) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>            if (LOG.isDebugEnabled()) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>              LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.266"></a>
-<span class="sourceLineNo">267</span>                id, perms, Perms.ALL));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>            }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>            return false;<a name="line.269"></a>
-<span class="sourceLineNo">270</span>          }<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        } else {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          if (LOG.isDebugEnabled()) {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>            LOG.debug("Unexpected shortname in SASL ACL: " + id);<a name="line.273"></a>
-<span class="sourceLineNo">274</span>          }<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          return false;<a name="line.275"></a>
-<span class="sourceLineNo">276</span>        }<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      } else {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        if (LOG.isDebugEnabled()) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          LOG.debug("unexpected ACL id '" + id + "'");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        return false;<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>    return true;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  }<a name="line.285"></a>
-<span class="sourceLineNo">286</span><a name="line.286"></a>
-<span class="sourceLineNo">287</span>  /*<a name="line.287"></a>
-<span class="sourceLineNo">288</span>   * Validate whether ACL set for all superusers.<a name="line.288"></a>
-<span class="sourceLineNo">289</span>   */<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    for (String user : superUsers) {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      boolean hasAccess = false;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (!AuthUtil.isGroupPrincipal(user)) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        for (ACL acl : acls) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>          if (user.equals(acl.getId().getId())) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>            if (acl.getPerms() == Perms.ALL) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>              hasAccess = true;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>            } else {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>              if (LOG.isDebugEnabled()) {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>                LOG.debug(String.format(<a name="line.301"></a>
-<span class="sourceLineNo">302</span>                  "superuser '%s' does not have correct permissions: have 0x%x, want 0x%x",<a name="line.302"></a>
-<span class="sourceLineNo">303</span>                  acl.getId().getId(), acl.getPerms(), Perms.ALL));<a name="line.303"></a>
-<span class="sourceLineNo">304</span>              }<a name="line.304"></a>
-<span class="sourceLineNo">305</span>            }<a name="line.305"></a>
-<span class="sourceLineNo">306</span>            break;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>          }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        }<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        if (!hasAccess) {<a name="line.309"></a>
+<span class="sourceLineNo">235</span>    for (String child : children) {<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      setZnodeAclsRecursive(ZNodePaths.joinZNode(znode, child));<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    List&lt;ACL&gt; acls = ZKUtil.createACL(this, znode, true);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    LOG.info("Setting ACLs for znode:" + znode + " , acl:" + acls);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    recoverableZooKeeper.setAcl(znode, acls, -1);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>  }<a name="line.241"></a>
+<span class="sourceLineNo">242</span><a name="line.242"></a>
+<span class="sourceLineNo">243</span>  /**<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   * Checks whether the ACLs returned from the base znode (/hbase) is set for secure setup.<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * @param acls acls from zookeeper<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * @return whether ACLs are set for the base znode<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   * @throws IOException if getting the current user fails<a name="line.247"></a>
+<span class="sourceLineNo">248</span>   */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  private boolean isBaseZnodeAclSetup(List&lt;ACL&gt; acls) throws IOException {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    if (LOG.isDebugEnabled()) {<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      LOG.debug("Checking znode ACLs");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    }<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    String[] superUsers = conf.getStrings(Superusers.SUPERUSER_CONF_KEY);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    // Check whether ACL set for all superusers<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    if (superUsers != null &amp;&amp; !checkACLForSuperUsers(superUsers, acls)) {<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      return false;<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>    // this assumes that current authenticated user is the same as zookeeper client user<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // configured via JAAS<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    String hbaseUser = UserGroupInformation.getCurrentUser().getShortUserName();<a name="line.261"></a>
+<span class="sourceLineNo">262</span><a name="line.262"></a>
+<span class="sourceLineNo">263</span>    if (acls.isEmpty()) {<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      if (LOG.isDebugEnabled()) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>        LOG.debug("ACL is empty");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      return false;<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>    for (ACL acl : acls) {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      int perms = acl.getPerms();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      Id id = acl.getId();<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      // We should only set at most 3 possible ACLs for 3 Ids. One for everyone, one for superuser<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      // and one for the hbase user<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      if (Ids.ANYONE_ID_UNSAFE.equals(id)) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        if (perms != Perms.READ) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          if (LOG.isDebugEnabled()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.278"></a>
+<span class="sourceLineNo">279</span>              id, perms, Perms.READ));<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          }<a name="line.280"></a>
+<span class="sourceLineNo">281</span>          return false;<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        }<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      } else if (superUsers != null &amp;&amp; isSuperUserId(superUsers, id)) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        if (perms != Perms.ALL) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          if (LOG.isDebugEnabled()) {<a name="line.285"></a>
+<span class="sourceLineNo">286</span>            LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.286"></a>
+<span class="sourceLineNo">287</span>              id, perms, Perms.ALL));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>          }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>          return false;<a name="line.289"></a>
+<span class="sourceLineNo">290</span>        }<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      } else if ("sasl".equals(id.getScheme())) {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>        String name = id.getId();<a name="line.292"></a>
+<span class="sourceLineNo">293</span>        // If ZooKeeper recorded the Kerberos full name in the ACL, use only the shortname<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        Matcher match = NAME_PATTERN.matcher(name);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        if (match.matches()) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>          name = match.group(1);<a name="line.296"></a>
+<span class="sourceLineNo">297</span>        }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        if (name.equals(hbaseUser)) {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          if (perms != Perms.ALL) {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>            if (LOG.isDebugEnabled()) {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>              LOG.debug(String.format("permissions for '%s' are not correct: have 0x%x, want 0x%x",<a name="line.301"></a>
+<span class="sourceLineNo">302</span>                id, perms, Perms.ALL));<a name="line.302"></a>
+<span class="sourceLineNo">303</span>            }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>            return false;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>          }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>        } else {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>          if (LOG.isDebugEnabled()) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>            LOG.debug("Unexpected shortname in SASL ACL: " + id);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          }<a name="line.309"></a>
 <span class="sourceLineNo">310</span>          return false;<a name="line.310"></a>
 <span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    return true;<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>   * Validate whether ACL ID is superuser.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    for (String user : superUsers) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      if (!AuthUtil.isGroupPrincipal(user) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>        return true;<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>    return false;<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>  @Override<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  public String toString() {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + znodePaths.baseZNode;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  /**<a name="line.335"></a>
-<span class="sourceLineNo">336</span>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>   * @param str String to amend.<a name="line.337"></a>
-<span class="sourceLineNo">338</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.338"></a>
-<span class="sourceLineNo">339</span>   *         if passed 'hello world', the returned string could be<a name="line.339"></a>
-<span class="sourceLineNo">340</span>   */<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  public String prefix(final String str) {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>    return this.toString() + " " + str;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  }<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  /**<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * Get the znodes corresponding to the meta replicas from ZK<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @return list of znodes<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   */<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public List&lt;String&gt; getMetaReplicaNodes() throws KeeperException {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    List&lt;String&gt; childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, znodePaths.baseZNode);<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    List&lt;String&gt; metaReplicaNodes = new ArrayList&lt;&gt;(2);<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    if (childrenOfBaseNode != null) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>      String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.354"></a>
-<span class="sourceLineNo">355</span>      for (String child : childrenOfBaseNode) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        if (child.startsWith(pattern)) {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>          metaReplicaNodes.add(child);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    return metaReplicaNodes;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  }<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  /**<a name="line.364"></a>
-<span class="sourceLineNo">365</span>   * Register the specified listener to receive ZooKeeper events.<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * @param listener the listener to register<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  public void registerListener(ZKListener listener) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>    listeners.add(listener);<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
-<span class="sourceLineNo">371</span><a name="line.371"></a>
-<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
-<span class="sourceLineNo">373</span>   * Register the specified listener to receive ZooKeeper events and add it as<a name="line.373"></a>
-<span class="sourceLineNo">374</span>   * the first in the list of current listeners.<a name="line.374"></a>
-<span class="sourceLineNo">375</span>   * @param listener the listener to register<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   */<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void registerListenerFirst(ZKListener listener) {<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    listeners.add(0, listener);<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>  public void unregisterListener(ZKListener listener) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    listeners.remove(listener);<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  }<a name="line.383"></a>
-<span class="sourceLineNo">384</span><a name="line.384"></a>
-<span class="sourceLineNo">385</span>  /**<a name="line.385"></a>
-<span class="sourceLineNo">386</span>   * Clean all existing listeners<a name="line.386"></a>
-<span class="sourceLineNo">387</span>   */<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  public void unregisterAllListeners() {<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    listeners.clear();<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  }<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  /**<a name="line.392"></a>
-<span class="sourceLineNo">393</span>   * Get a copy of current registered listeners<a name="line.393"></a>
-<span class="sourceLineNo">394</span>   */<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  public List&lt;ZKListener&gt; getListeners() {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return new ArrayList&lt;&gt;(listeners);<a name="line.396"></a>
+<span class="sourceLineNo">312</span>      } else {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        if (LOG.isDebugEnabled()) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>          LOG.debug("unexpected ACL id '" + id + "'");<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        }<a name="line.315"></a>
+<span class="sourceLineNo">316</span>        return false;<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>    return true;<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  }<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  /*<a name="line.322"></a>
+<span class="sourceLineNo">323</span>   * Validate whether ACL set for all superusers.<a name="line.323"></a>
+<span class="sourceLineNo">324</span>   */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  private boolean checkACLForSuperUsers(String[] superUsers, List&lt;ACL&gt; acls) {<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    for (String user : superUsers) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      boolean hasAccess = false;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      if (!AuthUtil.isGroupPrincipal(user)) {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        for (ACL acl : acls) {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>          if (user.equals(acl.getId().getId())) {<a name="line.331"></a>
+<span class="sourceLineNo">332</span>            if (acl.getPerms() == Perms.ALL) {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>              hasAccess = true;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>            } else {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>              if (LOG.isDebugEnabled()) {<a name="line.335"></a>
+<span class="sourceLineNo">336</span>                LOG.debug(String.format(<a name="line.336"></a>
+<span class="sourceLineNo">337</span>                  "superuser '%s' does not have correct permissions: have 0x%x, want 0x%x",<a name="line.337"></a>
+<span class="sourceLineNo">338</span>                  acl.getId().getId(), acl.getPerms(), Perms.ALL));<a name="line.338"></a>
+<span class="sourceLineNo">339</span>              }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>            }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>            break;<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>        if (!hasAccess) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>          return false;<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 true;<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>   * Validate whether ACL ID is superuser.<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static boolean isSuperUserId(String[] superUsers, Id id) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (String user : superUsers) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      // TODO: Validate super group members also when ZK supports setting node ACL for groups.<a name="line.357"></a>
+<span class="sourceLineNo">358</span>      if (!AuthUtil.isGroupPrincipal(user) &amp;&amp; new Id("sasl", user).equals(id)) {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        return true;<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>    return false;<a name="line.362"></a>
+<span class="sourceLineNo">363</span>  }<a name="line.363"></a>
+<span class="sourceLineNo">364</span><a name="line.364"></a>
+<span class="sourceLineNo">365</span>  @Override<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  public String toString() {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    return this.identifier + ", quorum=" + quorum + ", baseZNode=" + znodePaths.baseZNode;<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>   * Adds this instance's identifier as a prefix to the passed &lt;code&gt;str&lt;/code&gt;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>   * @param str String to amend.<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * @return A new string with this instance's identifier as prefix: e.g.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   *         if passed 'hello world', the returned string could be<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   */<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  public String prefix(final String str) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>    return this.toString() + " " + str;<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>   * Get the znodes corresponding to the meta replicas from ZK<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * @return list of znodes<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public List&lt;String&gt; getMetaReplicaNodes() throws KeeperException {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    List&lt;String&gt; childrenOfBaseNode = ZKUtil.listChildrenNoWatch(this, znodePaths.baseZNode);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    List&lt;String&gt; metaReplicaNodes = new ArrayList&lt;&gt;(2);<a name="line.387"></a>
+<span class="sourceLineNo">388</span>    if (childrenOfBaseNode != null) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      String pattern = conf.get("zookeeper.znode.metaserver","meta-region-server");<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      for (String child : childrenOfBaseNode) {<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        if (child.startsWith(pattern)) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>          metaReplicaNodes.add(child);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        }<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    }<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    return metaReplicaNodes;<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>  /**<a name="line.399"></a>
-<span class="sourceLineNo">400</span>   * @return The number of currently registered listeners<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public int getNumberOfListeners() {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>    return listeners.size();<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  }<a name="line.404"></a>
-<span class="sourceLineNo">405</span><a name="line.405"></a>
-<span class="sourceLineNo">406</span>  /**<a name="line.406"></a>
-<span class="sourceLineNo">407</span>   * Get the connection to ZooKeeper.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>   * @return connection reference to zookeeper<a name="line.408"></a>
-<span class="sourceLineNo">409</span>   */<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  public RecoverableZooKeeper getRecoverableZooKeeper() {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    return recoverableZooKeeper;<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
-<span class="sourceLineNo">413</span><a name="line.413"></a>
-<span class="sourceLineNo">414</span>  public void reconnectAfterExpiration() throws IOException, KeeperException, InterruptedException {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    recoverableZooKeeper.reconnectAfterExpiration();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * Get the quorum address of this instance.<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * @return quorum string of this zookeeper connection instance<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  public String getQuorum() {<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    return quorum;<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>   * Get the znodePaths.<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * &lt;p&gt;<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * Mainly used for mocking as mockito can not mock a field access.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  public ZNodePaths getZNodePaths() {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    return znodePaths;<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  }<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /**<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * Method called from ZooKeeper for events and connection status.<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * &lt;p&gt;<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   * Valid events are passed along to listeners.  Connection status changes<a name="line.438"></a>
-<span class="sourceLineNo">439</span>   * are dealt with locally.<a name="line.439"></a>
-<span class="sourceLineNo">440</span>   */<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  @Override<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public void process(WatchedEvent event) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    LOG.debug(prefix("Received ZooKeeper Event, " +<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        "type=" + event.getType() + ", " +<a name="line.444"></a>
-<span class="sourceLineNo">445</span>        "state=" + event.getState() + ", " +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>        "path=" + event.getPath()));<a name="line.446"></a>
-<span class="sourceLineNo">447</span><a name="line.447"></a>
-<span class="sourceLineNo">448</span>    switch(event.getType()) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>      // If event type is NONE, this is a connection status change<a name="line.450"></a>
-<span class="sourceLineNo">451</span>      case None: {<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        connectionEvent(event);<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        break;<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>      // Otherwise pass along to the listeners<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>      case NodeCreated: {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>        for(ZKListener listener : listeners) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>          listener.nodeCreated(event.getPath());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        }<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        break;<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>      case NodeDeleted: {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        for(ZKListener listener : listeners) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>          listener.nodeDeleted(event.getPath());<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        }<a name="line.468"></a>
-<span class="sourceLineNo">469</span>        break;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span><a name="line.471"></a>
-<span class="sourceLineNo">472</span>      case NodeDataChanged: {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>        for(ZKListener listener : listeners) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>          listener.nodeDataChanged(event.getPath());<a name="line.474"></a>
-<span class="sourceLineNo">475</span>        }<a name="line.475"></a>
-<span class="sourceLineNo">476</span>        break;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      }<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>      case NodeChildrenChanged: {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        for(ZKListener listener : listeners) {<a name="line.480"></a>
-<span class="sourceLineNo">481</span>          listener.nodeChildrenChanged(event.getPath());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        }<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        break;<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><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  // Connection management<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>   * Called when there is a connection-related event via the Watcher callback.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * &lt;p&gt;<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * If Disconnected or Expired, this should shutdown the cluster. But, since<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * we send a KeeperException.SessionExpiredException along with the abort<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * call, it's possible for the Abortable to catch it and try to create a new<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * session with ZooKeeper. This is what the client does in HCM.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   * &lt;p&gt;<a name="line.497"></a>
-<span class="sourceLineNo">498</span>   * @param event the connection-related event<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private void connectionEvent(WatchedEvent event) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>    switch(event.getState()) {<a name="line.501"></a>
-<span class="sourceLineNo">502</span>      case SyncConnected:<a name="line.502"></a>
-<span class="sourceLineNo">503</span>        this.identifier = this.prefix + "-0x" +<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          Long.toHexString(this.recoverableZooKeeper.getSessionId());<a name="line.504"></a>
-<span class="sourceLineNo">505</span>        // Update our identifier.  Otherwise ignore.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>        LOG.debug(this.identifier + " connected");<a name="line.506"></a>
-<span class="sourceLineNo">507</span>        break;<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      // Abort the server if Disconnected or Expired<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      case Disconnected:<a name="line.510"></a>
-<span class="sourceLineNo">511</span>        LOG.debug(prefix("Received Disconnected from ZooKeeper, ignoring"));<a name="line.511"></a>
-<span class="sourceLineNo">512</span>        break;<a name="line.512"></a>
+<span class="sourceLineNo">400</span>   * Register the specified listener to receive ZooKeeper events.<a name="line.400"></a>
+<span class="sourceLineNo">401</span>   * @param listener the listener to register<a name="line.401"></a>
+<span class="sourceLineNo">402</span>   */<a name="line.402"></a>
+<span class="sourceLineNo">403</span>  public void registerListener(ZKListener listener) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>    listeners.add(listener);<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>   * Register the specified listener to receive ZooKeeper events and add it as<a name="line.408"></a>
+<span class="sourceLineNo">409</span>   * the first in the list of current listeners.<a name="line.409"></a>
+<span class="sourceLineNo">410</span>   * @param listener the listener to register<a name="line.410"></a>
+<span class="sourceLineNo">411</span>   */<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  public void registerListenerFirst(ZKListener listener) {<a name="line.412"></a>
+<span class="sourceLineNo">413</span>    listeners.add(0, listener);<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  }<a name="line.414"></a>
+<span class="sourceLineNo">415</span><a name="line.415"></a>
+<span class="sourceLineNo">416</span>  public void unregisterListener(ZKListener listener) {<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    listeners.remove(listener);<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>   * Clean all existing listeners<a name="line.421"></a>
+<span class="sourceLineNo">422</span>   */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  public void unregisterAllListeners() {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    listeners.clear();<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  }<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * Get a copy of current registered listeners<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public List&lt;ZKListener&gt; getListeners() {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    return new ArrayList&lt;&gt;(listeners);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /**<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * @return The number of currently registered listeners<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public int getNumberOfListeners() {<a name="line.437"></a>
+<span class="sourceLineNo">438</span>    return listeners.size();<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  }<a name="line.439"></a>
+<span class="sourceLineNo">440</span><a name="line.440"></a>
+<span class="sourceLineNo">441</span>  /**<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   * Get the connection to ZooKeeper.<a name="line.442"></a>
+<span class="sourceLineNo">443</span>   * @return connection reference to zookeeper<a name="line.443"></a>
+<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  public RecoverableZooKeeper getRecoverableZooKeeper() {<a name="line.445"></a>
+<span class="sourceLineNo">446</span>    return recoverableZooKeeper;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public void reconnectAfterExpiration() throws IOException, KeeperException, InterruptedException {<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    recoverableZooKeeper.reconnectAfterExpiration();<a name="line.450"></a>
+<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>  /**<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   * Get the quorum address of this instance.<a name="line.454"></a>
+<span class="sourceLineNo">455</span>   * @return quorum string of this zookeeper connection instance<a name="line.455"></a>
+<span class="sourceLineNo">456</span>   */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public String getQuorum() {<a name="line.457"></a>
+<span class="sourceLineNo">458</span>    return quorum;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>  }<a name="line.459"></a>
+<span class="sourceLineNo">460</span><a name="line.460"></a>
+<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
+<span class="sourceLineNo">462</span>   * Get the znodePaths.<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * &lt;p&gt;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   * Mainly used for mocking as mockito can not mock a field access.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  public ZNodePaths getZNodePaths() {<a name="line.466"></a>
+<span class="sourceLineNo">467</span>    return znodePaths;<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>   * Method called from ZooKeeper for events and connection status.<a name="line.471"></a>
+<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Valid events are passed along to listeners.  Connection status changes<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * are dealt with locally.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   */<a name="line.475"></a>
+<span class="sourceLineNo">476</span>  @Override<a name="line.476"></a>
+<span class="sourceLineNo">477</span>  public void process(WatchedEvent event) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>    LOG.debug(prefix("Received ZooKeeper Event, " +<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        "type=" + event.getType() + ", " +<a name="line.479"></a>
+<span class="sourceLineNo">480</span>        "state=" + event.getState() + ", " +<a name="line.480"></a>
+<span class="sourceLineNo">481</span>        "path=" + event.getPath()));<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>    switch(event.getType()) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span><a name="line.484"></a>
+<span class="sourceLineNo">485</span>      // If event type is NONE, this is a connection status change<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      case None: {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        connectionEvent(event);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>        break;<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>      // Otherwise pass along to the listeners<a name="line.491"></a>
+<span class="sourceLineNo">492</span><a name="line.492"></a>
+<span class="sourceLineNo">493</span>      case NodeCreated: {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        for(ZKListener listener : listeners) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          listener.nodeCreated(event.getPath());<a name="line.495"></a>
+<span class="sourceLineNo">496</span>        }<a name="line.496"></a>
+<span class="sourceLineNo">497</span>        break;<a name="line.497"></a>
+<span class="sourceLineNo">498</span>      }<a name="line.498"></a>
+<span class="sourceLineNo">499</span><a name="line.499"></a>
+<span class="sourceLineNo">500</span>      case NodeDeleted: {<a name="line.500"></a>
+<span class="sourceLineNo">501</span>        for(ZKListener listener : listeners) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>          listener.nodeDeleted(event.getPath());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>        }<a name="line.503"></a>
+<span class="sourceLineNo">504</span>        break;<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>      case NodeDataChanged: {<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        for(ZKListener listener : listeners) {<a name="line.508"></a>
+<span class="sourceLineNo">509</span>          listener.nodeDataChanged(event.getPath());<a name="line.509"></a>
+<span class="sourceLineNo">510</span>        }<a name="line.510"></a>
+<span class="sourceLineNo">511</span>        break;<a name="line.511"></a>
+<span class="sourceLineNo">512</span>      }<a name="line.512"></a>
 <span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      case Expired:<a name="line.514"></a>
-<span class="sourceLineNo">515</span>        String msg = prefix(this.identifier + " received expired from " +<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          "ZooKeeper, aborting");<a name="line.516"></a>
-<span class="sourceLineNo">517</span>        // TODO: One thought is to add call to ZKListener so say,<a name="line.517"></a>
-<span class="sourceLineNo">518</span>        // ZKNodeTracker can zero out its data values.<a name="line.518"></a>
-<span class="sourceLineNo">519</span>        if (this.abortable != null) {<a name="line.519"></a>
-<span class="sourceLineNo">520</span>          this.abortable.abort(msg, new KeeperException.SessionExpiredException());<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        }<a name="line.521"></a>
-<span class="sourceLineNo">522</span>        break;<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>      case ConnectedReadOnly:<a name="line.524"></a>
-<span class="sourceLineNo">525</span>      case SaslAuthenticated:<a name="line.525"></a>
-<span class="sourceLineNo">526</span>      case AuthFailed:<a name="line.526"></a>
-<span class="sourceLineNo">527</span>        break;<a name="line.527"></a>
-<span class="sourceLineNo">528</span><a name="line.528"></a>
-<span class="sourceLineNo">529</span>      default:<a name="line.529"></a>
-<span class="sourceLineNo">530</span>        throw new IllegalStateException("Received event is not valid: " + event.getState());<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>  }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>  /**<a name="line.534"></a>
-<span class="sourceLineNo">535</span>   * Forces a synchronization of this ZooKeeper client connection.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>   * &lt;p&gt;<a name="line.536"></a>
-<span class="sourceLineNo">537</span>   * Executing this method before running other methods will ensure that the<a name="line.537"></a>
-<span class="sourceLineNo">538</span>   * subsequent operations are up-to-date and consistent as of the time that<a name="line.538"></a>
-<span class="sourceLineNo">539</span>   * the sync is complete.<a name="line.539"></a>
-<span class="sourceLineNo">540</span>   * &lt;p&gt;<a name="line.540"></a>
-<span class="sourceLineNo">541</span>   * This is used for compareAndSwap type operations where we need to read the<a name="line.541"></a>
-<span class="sourceLineNo">542</span>   * data of an existing node and delete or transition that node, utilizing the<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * previously read version and data.  We want to ensure that the version read<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   * is up-to-date from when we begin the operation.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>   */<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  public void sync(String path) throws KeeperException {<a name="line.546"></a>
-<span class="sourceLineNo">547</span>    this.recoverableZooKeeper.sync(path, null, null);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>  }<a name="line.548"></a>
-<span class="sourceLineNo">549</span><a name="line.549"></a>
-<span class="sourceLineNo">550</span>  /**<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * Handles KeeperExceptions in client calls.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * &lt;p&gt;<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * This may be temporary but for now this gives one place to deal with these.<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   * &lt;p&gt;<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * TODO: Currently this method rethrows the exception to let the caller handle<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   * &lt;p&gt;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   * @param ke the exception to rethrow<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   * @throws KeeperException if a ZooKeeper operation fails<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   */<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void keeperException(KeeperException ke) throws KeeperException {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    LOG.error(prefix("Received unexpected KeeperException, re-throwing exception"), ke);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>    throw ke;<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>   * Handles InterruptedExceptions in client calls.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   * @param ie the InterruptedException instance thrown<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * @throws KeeperException the exception to throw, transformed from the InterruptedException<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  public void interruptedException(InterruptedException ie) throws KeeperException {<a name="line.570"></a>
-<span class="sourceLineNo">571</span>    interruptedExceptionNoThrow(ie, true);<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    // Throw a system error exception to let upper level handle it<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    throw new KeeperException.SystemErrorException();<a name="line.573"></a>
-<span class="sourceLineNo">574</span>  }<a name="line.574"></a>
-<span class="sourceLineNo">575</span><a name="line.575"></a>
-<span class="sourceLineNo">576</span>  /**<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * Log the InterruptedException and interrupt current thread<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   * @param ie The IterruptedException to log<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   * @param throwLater Whether we will throw the exception latter<a name="line.579"></a>
+<span class="sourceLineNo">514</span>      case NodeChildrenChanged: {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        for(ZKListener listener : listeners) {<a name="line.515"></a>
+<span class="sourceLineNo">516</span>          listener.nodeChildrenChanged(event.getPath());<a name="line.516"></a>
+<span class="sourceLineNo">517</span>        }<a name="line.517"></a>
+<span class="sourceLineNo">518</span>        break;<a name="line.518"></a>
+<span class="sourceLineNo">519</span>      }<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    }<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>  // Connection management<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>   * Called when there is a connection-related event via the Watcher callback.<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * &lt;p&gt;<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * If Disconnected or Expired, this should shutdown the cluster. But, since<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * we send a KeeperException.SessionExpiredException along with the abort<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   * call, it's possible for the Abortable to catch it and try to create a new<a name="line.530"></a>
+<span class="sourceLineNo">531</span>   * session with ZooKeeper. This is what the client does in HCM.<a name="line.531"></a>
+<span class="sourceLineNo">532</span>   * &lt;p&gt;<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * @param event the connection-related event<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
+<span class="sourceLineNo">535</span>  private void connectionEvent(WatchedEvent event) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    switch(event.getState()) {<a name="line.536"></a>
+<span class="sourceLineNo">537</span>      case SyncConnected:<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        this.identifier = this.prefix + "-0x" +<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          Long.toHexString(this.recoverableZooKeeper.getSessionId());<a name="line.539"></a>
+<span class="sourceLineNo">540</span>        // Update our identifier.  Otherwise ignore.<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        LOG.debug(this.identifier + " connected");<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        break;<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>      // Abort the server if Disconnected or Expired<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      case Disconnected:<a name="line.545"></a>
+<span class="sourceLineNo">546</span>        LOG.debug(prefix("Received Disconnected from ZooKeeper, ignoring"));<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        break;<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>      case Expired:<a name="line.549"></a>
+<span class="sourceLineNo">550</span>        String msg = prefix(this.identifier + " received expired from " +<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          "ZooKeeper, aborting");<a name="line.551"></a>
+<span class="sourceLineNo">552</span>        // TODO: One thought is to add call to ZKListener so say,<a name="line.552"></a>
+<span class="sourceLineNo">553</span>        // ZKNodeTracker can zero out its data values.<a name="line.553"></a>
+<span class="sourceLineNo">554</span>        if (this.abortable != null) {<a name="line.554"></a>
+<span class="sourceLineNo">555</span>          this.abortable.abort(msg, new KeeperException.SessionExpiredException());<a name="line.555"></a>
+<span class="sourceLineNo">556</span>        }<a name="line.556"></a>
+<span class="sourceLineNo">557</span>        break;<a name="line.557"></a>
+<span class="sourceLineNo">558</span><a name="line.558"></a>
+<span class="sourceLineNo">559</span>      case ConnectedReadOnly:<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      case SaslAuthenticated:<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      case AuthFailed:<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        break;<a name="line.562"></a>
+<span class="sourceLineNo">563</span><a name="line.563"></a>
+<span class="sourceLineNo">564</span>      default:<a name="line.564"></a>
+<span class="sourceLineNo">565</span>        throw new IllegalStateException("Received event is not valid: " + event.getState());<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    }<a name="line.566"></a>
+<span class="sourceLineNo">567</span>  }<a name="line.567"></a>
+<span class="sourceLineNo">568</span><a name="line.568"></a>
+<span class="sourceLineNo">569</span>  /**<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   * Forces a synchronization of this ZooKeeper client connection.<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   * &lt;p&gt;<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   * Executing this method before running other methods will ensure that the<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   * subsequent operations are up-to-date and consistent as of the time that<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   * the sync is complete.<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   * &lt;p&gt;<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   * This is used for compareAndSwap type operations where we need to read the<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   * data of an existing node and delete or transition that node, utilizing the<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   * previously read version and data.  We want to ensure that the version read<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   * is up-to-date from when we begin the operation.<a name="line.579"></a>
 <span class="sourceLineNo">580</span>   */<a name="line.580"></a>
-<span class="sourceLineNo">581</span>  public void interruptedExceptionNoThrow(InterruptedException ie, boolean throwLater) {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>    LOG.debug(prefix("Received InterruptedException, will interrupt current thread"<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        + (throwLater ? " and rethrow a SystemErrorException" : "")),<a name="line.583"></a>
-<span class="sourceLineNo">584</span>      ie);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>    // At least preserve interrupt.<a name="line.585"></a>
-<span class="sourceLineNo">586</span>    Thread.currentThread().interrupt();<a name="line.586"></a>
-<span class="sourceLineNo">587</span>  }<a name="line.587"></a>
-<span class="sourceLineNo">588</span><a name="line.588"></a>
-<span class="sourceLineNo">589</span>  /**<a name="line.589"></a>
-<span class="sourceLineNo">590</span>   * Close the connection to ZooKeeper.<a name="line.590"></a>
-<span class="sourceLineNo">591</span>   *<a name="line.591"></a>
-<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
-<span class="sourceLineNo">593</span>  @Override<a name="line.593"></a>
-<span class="sourceLineNo">594</span>  public void close() {<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    try {<a name="line.595"><

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
index 9b42e6b..6c6f61c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
@@ -32,293 +32,313 @@
 <span class="sourceLineNo">024</span><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.HConstants;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * Utility methods for reading, and building the ZooKeeper configuration.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * The order and priority for reading the config are as follows:<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * (1). Property with "hbase.zookeeper.property." prefix from HBase XML<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * (2). other zookeeper related properties in HBASE XML<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public final class ZKConfig {<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private static final String VARIABLE_START = "${";<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private ZKConfig() {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * Make a Properties object holding ZooKeeper config.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * and generates the appropriate ZooKeeper properties.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * @param conf Configuration to read from.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public static Properties makeZKProps(Configuration conf) {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    return makeZKPropsFromHbaseConfig(conf);<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>  /**<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * Make a Properties object holding ZooKeeper config.<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * and generates the appropriate ZooKeeper properties.<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @param conf Configuration to read from.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static Properties makeZKPropsFromHbaseConfig(Configuration conf) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    Properties zkProperties = new Properties();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    // Directly map all of the hbase.zookeeper.property.KEY properties.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // Synchronize on conf so no loading of configs while we iterate<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    synchronized (conf) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      for (Entry&lt;String, String&gt; entry : conf) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        String key = entry.getKey();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>        if (key.startsWith(HConstants.ZK_CFG_PROPERTY_PREFIX)) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>          String zkKey = key.substring(HConstants.ZK_CFG_PROPERTY_PREFIX_LEN);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>          String value = entry.getValue();<a name="line.75"></a>
-<span class="sourceLineNo">076</span>          // If the value has variables substitutions, need to do a get.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>          if (value.contains(VARIABLE_START)) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>            value = conf.get(key);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>          }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>          zkProperties.setProperty(zkKey, value);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // If clientPort is not set, assign the default.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    if (zkProperties.getProperty(HConstants.CLIENT_PORT_STR) == null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      zkProperties.put(HConstants.CLIENT_PORT_STR,<a name="line.87"></a>
-<span class="sourceLineNo">088</span>          HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>    // Create the server.X properties.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    int peerPort = conf.getInt("hbase.zookeeper.peerport", 2888);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    int leaderPort = conf.getInt("hbase.zookeeper.leaderport", 3888);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    final String[] serverHosts = conf.getStrings(HConstants.ZOOKEEPER_QUORUM,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>                                                 HConstants.LOCALHOST);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    String serverHost;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    String address;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    String key;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      if (serverHosts[i].contains(":")) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        serverHost = serverHosts[i].substring(0, serverHosts[i].indexOf(':'));<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      } else {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        serverHost = serverHosts[i];<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      address = serverHost + ":" + peerPort + ":" + leaderPort;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      key = "server." + i;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      zkProperties.put(key, address);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return zkProperties;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Return the ZK Quorum servers string given the specified configuration<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   *<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param conf<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return Quorum servers String<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static String getZKQuorumServersStringFromHbaseConfig(Configuration conf) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    String defaultClientPort = Integer.toString(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT));<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    final String[] serverHosts =<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        conf.getStrings(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    return buildZKQuorumServerString(serverHosts, defaultClientPort);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  /**<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * Return the ZK Quorum servers string given the specified configuration.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @return Quorum servers<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static String getZKQuorumServersString(Configuration conf) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return getZKQuorumServersStringFromHbaseConfig(conf);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   *<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param serverHosts a list of servers for ZK quorum<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @param clientPort the default client port<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @return the string for a list of "server:port" separated by ","<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static String buildZKQuorumServerString(String[] serverHosts, String clientPort) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    StringBuilder quorumStringBuilder = new StringBuilder();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    String serverHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      if (serverHosts[i].contains(":")) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        serverHost = serverHosts[i]; // just use the port specified from the input<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      } else {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        serverHost = serverHosts[i] + ":" + clientPort;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      if (i &gt; 0) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        quorumStringBuilder.append(',');<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      quorumStringBuilder.append(serverHost);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    return quorumStringBuilder.toString();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Verifies that the given key matches the expected format for a ZooKeeper cluster key.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * The Quorum for the ZK cluster can have one the following formats (see examples below):<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   *<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;ol&gt;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   *   &lt;li&gt;s1,s2,s3 (no client port in the list, the client port could be obtained from<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   *       clientPort)&lt;/li&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   *   &lt;li&gt;s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   *       in this case, the clientPort would be ignored)&lt;/li&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   *   &lt;li&gt;s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   *       the clientPort; otherwise, it would use the specified port)&lt;/li&gt;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * &lt;/ol&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   *<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param key the cluster key to validate<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws IOException if the key could not be parsed<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public static void validateClusterKey(String key) throws IOException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    transformClusterKey(key);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * Separate the given key into the three configurations it should contain:<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * hbase.zookeeper.quorum, hbase.zookeeper.client.port<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and zookeeper.znode.parent<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param key<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @return the three configuration in the described order<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @throws IOException<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public static ZKClusterKey transformClusterKey(String key) throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    String[] parts = key.split(":");<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    if (parts.length == 3) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      if (!parts[2].matches("/.*[^/]")) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.196"></a>
-<span class="sourceLineNo">197</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      return new ZKClusterKey(parts [0], Integer.parseInt(parts [1]), parts [2]);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (parts.length &gt; 3) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // The quorum could contain client port in server:clientport format, try to transform more.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      String zNodeParent = parts [parts.length - 1];<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (!zNodeParent.matches("/.*[^/]")) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:"<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            + HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.207"></a>
-<span class="sourceLineNo">208</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<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>      String clientPort = parts [parts.length - 2];<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // The first part length is the total length minus the lengths of other parts and minus 2 ":"<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      int endQuorumIndex = key.length() - zNodeParent.length() - clientPort.length() - 2;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      String quorumStringInput = key.substring(0, endQuorumIndex);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      String[] serverHosts = quorumStringInput.split(",");<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // The common case is that every server has its own client port specified - this means<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      // that (total parts - the ZNodeParent part - the ClientPort part) is equal to<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // (the number of "," + 1) - "+ 1" because the last server has no ",".<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if ((parts.length - 2) == (serverHosts.length + 1)) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return new ZKClusterKey(quorumStringInput, Integer.parseInt(clientPort), zNodeParent);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      // For the uncommon case that some servers has no port specified, we need to build the<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // server:clientport list using default client port for servers without specified port.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return new ZKClusterKey(<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          buildZKQuorumServerString(serverHosts, clientPort),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Integer.parseInt(clientPort),<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          zNodeParent);<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>    throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * Get the key to the ZK ensemble for this configuration without<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * adding a name at the end<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * @param conf Configuration to use to build the key<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @return ensemble key without a name<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  public static String getZooKeeperClusterKey(Configuration conf) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    return getZooKeeperClusterKey(conf, null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * Get the key to the ZK ensemble for this configuration and append<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   * a name at the end<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param conf Configuration to use to build the key<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * @param name Name that should be appended at the end if not empty or null<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @return ensemble key with a name (if any)<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public static String getZooKeeperClusterKey(Configuration conf, String name) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String ensemble = conf.get(HConstants.ZOOKEEPER_QUORUM).replaceAll(<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        "[\\t\\n\\x0B\\f\\r]", "");<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    StringBuilder builder = new StringBuilder(ensemble);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    builder.append(":");<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    builder.append(conf.get(HConstants.ZOOKEEPER_CLIENT_PORT));<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    builder.append(":");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    builder.append(conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT));<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (name != null &amp;&amp; !name.isEmpty()) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      builder.append(",");<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      builder.append(name);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return builder.toString();<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>   * Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @param quorumStringInput a string contains a list of servers for ZK quorum<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param clientPort the default client port<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @return the string for a list of "server:port" separated by ","<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  @VisibleForTesting<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public static String standardizeZKQuorumServerString(String quorumStringInput,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      String clientPort) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    String[] serverHosts = quorumStringInput.split(",");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return buildZKQuorumServerString(serverHosts, clientPort);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // The Quorum for the ZK cluster can have one the following format (see examples below):<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  // (1). s1,s2,s3 (no client port in the list, the client port could be obtained from clientPort)<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // (2). s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  //      in this case, the clientPort would be ignored)<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // (3). s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  //      the clientPort; otherwise, it would use the specified port)<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @VisibleForTesting<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public static class ZKClusterKey {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    private String quorumString;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    private int clientPort;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    private String znodeParent;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    ZKClusterKey(String quorumString, int clientPort, String znodeParent) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      this.quorumString = quorumString;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      this.clientPort = clientPort;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      this.znodeParent = znodeParent;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    public String getQuorumString() {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return quorumString;<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>    public int getClientPort() {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      return clientPort;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    public String getZnodeParent() {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      return znodeParent;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>}<a name="line.313"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Utility methods for reading, and building the ZooKeeper configuration.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * The order and priority for reading the config are as follows:<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * (1). Property with "hbase.zookeeper.property." prefix from HBase XML<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * (2). other zookeeper related properties in HBASE XML<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public final class ZKConfig {<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private static final String VARIABLE_START = "${";<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private ZKConfig() {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  /**<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * Make a Properties object holding ZooKeeper config.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * and generates the appropriate ZooKeeper properties.<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * @param conf Configuration to read from.<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public static Properties makeZKProps(Configuration conf) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return makeZKPropsFromHbaseConfig(conf);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * Make a Properties object holding ZooKeeper config.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * and generates the appropriate ZooKeeper properties.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   *<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @param conf Configuration to read from.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static Properties makeZKPropsFromHbaseConfig(Configuration conf) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    Properties zkProperties = new Properties();<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // Directly map all of the hbase.zookeeper.property.KEY properties.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    // Synchronize on conf so no loading of configs while we iterate<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    synchronized (conf) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      for (Entry&lt;String, String&gt; entry : conf) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        String key = entry.getKey();<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        if (key.startsWith(HConstants.ZK_CFG_PROPERTY_PREFIX)) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>          String zkKey = key.substring(HConstants.ZK_CFG_PROPERTY_PREFIX_LEN);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>          String value = entry.getValue();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>          // If the value has variables substitutions, need to do a get.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>          if (value.contains(VARIABLE_START)) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>            value = conf.get(key);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>          }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          zkProperties.setProperty(zkKey, value);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    // If clientPort is not set, assign the default.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    if (zkProperties.getProperty(HConstants.CLIENT_PORT_STR) == null) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      zkProperties.put(HConstants.CLIENT_PORT_STR,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>          HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT);<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>    // Create the server.X properties.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    int peerPort = conf.getInt("hbase.zookeeper.peerport", 2888);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    int leaderPort = conf.getInt("hbase.zookeeper.leaderport", 3888);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    final String[] serverHosts = conf.getStrings(HConstants.ZOOKEEPER_QUORUM,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>                                                 HConstants.LOCALHOST);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    String serverHost;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    String address;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    String key;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      if (serverHosts[i].contains(":")) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        serverHost = serverHosts[i].substring(0, serverHosts[i].indexOf(':'));<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      } else {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        serverHost = serverHosts[i];<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      address = serverHost + ":" + peerPort + ":" + leaderPort;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      key = "server." + i;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      zkProperties.put(key, address);<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 zkProperties;<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>  /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * Return the ZK Quorum servers string given the specified configuration<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   *<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param conf<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @return Quorum servers String<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private static String getZKQuorumServersStringFromHbaseConfig(Configuration conf) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    String defaultClientPort = Integer.toString(<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT));<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    final String[] serverHosts =<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        conf.getStrings(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    return buildZKQuorumServerString(serverHosts, defaultClientPort);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * Return the ZK Quorum servers string given the specified configuration.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @return Quorum servers<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static String getZKQuorumServersString(Configuration conf) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return getZKQuorumServersStringFromHbaseConfig(conf);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   *<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @param serverHosts a list of servers for ZK quorum<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @param clientPort the default client port<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @return the string for a list of "server:port" separated by ","<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public static String buildZKQuorumServerString(String[] serverHosts, String clientPort) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    StringBuilder quorumStringBuilder = new StringBuilder();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    String serverHost;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      if (serverHosts[i].contains(":")) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        serverHost = serverHosts[i]; // just use the port specified from the input<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      } else {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        serverHost = serverHosts[i] + ":" + clientPort;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      if (i &gt; 0) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        quorumStringBuilder.append(',');<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      quorumStringBuilder.append(serverHost);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return quorumStringBuilder.toString();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Verifies that the given key matches the expected format for a ZooKeeper cluster key.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * The Quorum for the ZK cluster can have one the following formats (see examples below):<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   *<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * &lt;ol&gt;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   *   &lt;li&gt;s1,s2,s3 (no client port in the list, the client port could be obtained from<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   *       clientPort)&lt;/li&gt;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   *   &lt;li&gt;s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *       in this case, the clientPort would be ignored)&lt;/li&gt;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   *   &lt;li&gt;s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   *       the clientPort; otherwise, it would use the specified port)&lt;/li&gt;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * &lt;/ol&gt;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   *<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param key the cluster key to validate<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @throws IOException if the key could not be parsed<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static void validateClusterKey(String key) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    transformClusterKey(key);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * Separate the given key into the three configurations it should contain:<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * hbase.zookeeper.quorum, hbase.zookeeper.client.port<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * and zookeeper.znode.parent<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param key<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @return the three configuration in the described order<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @throws IOException<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  public static ZKClusterKey transformClusterKey(String key) throws IOException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    String[] parts = key.split(":");<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    if (parts.length == 3) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      if (!parts[2].matches("/.*[^/]")) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return new ZKClusterKey(parts [0], Integer.parseInt(parts [1]), parts [2]);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (parts.length &gt; 3) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // The quorum could contain client port in server:clientport format, try to transform more.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      String zNodeParent = parts [parts.length - 1];<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      if (!zNodeParent.matches("/.*[^/]")) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:"<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            + HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<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>      String clientPort = parts [parts.length - 2];<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // The first part length is the total length minus the lengths of other parts and minus 2 ":"<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      int endQuorumIndex = key.length() - zNodeParent.length() - clientPort.length() - 2;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      String quorumStringInput = key.substring(0, endQuorumIndex);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      String[] serverHosts = quorumStringInput.split(",");<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      // The common case is that every server has its own client port specified - this means<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // that (total parts - the ZNodeParent part - the ClientPort part) is equal to<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      // (the number of "," + 1) - "+ 1" because the last server has no ",".<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      if ((parts.length - 2) == (serverHosts.length + 1)) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return new ZKClusterKey(quorumStringInput, Integer.parseInt(clientPort), zNodeParent);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>      // For the uncommon case that some servers has no port specified, we need to build the<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // server:clientport list using default client port for servers without specified port.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return new ZKClusterKey(<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          buildZKQuorumServerString(serverHosts, clientPort),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          Integer.parseInt(clientPort),<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          zNodeParent);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * Get the key to the ZK ensemble for this configuration without<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * adding a name at the end<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * @param conf Configuration to use to build the key<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * @return ensemble key without a name<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  public static String getZooKeeperClusterKey(Configuration conf) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    return getZooKeeperClusterKey(conf, null);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>  /**<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   * Get the key to the ZK ensemble for this configuration and append<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * a name at the end<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   * @param conf Configuration to use to build the key<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param name Name that should be appended at the end if not empty or null<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @return ensemble key with a name (if any)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   */<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public static String getZooKeeperClusterKey(Configuration conf, String name) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String ensemble = conf.get(HConstants.ZOOKEEPER_QUORUM).replaceAll(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        "[\\t\\n\\x0B\\f\\r]", "");<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    StringBuilder builder = new StringBuilder(ensemble);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    builder.append(":");<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    builder.append(conf.get(HConstants.ZOOKEEPER_CLIENT_PORT));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    builder.append(":");<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    builder.append(conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (name != null &amp;&amp; !name.isEmpty()) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      builder.append(",");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      builder.append(name);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return builder.toString();<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>   * Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * @param quorumStringInput a string contains a list of servers for ZK quorum<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * @param clientPort the default client port<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @return the string for a list of "server:port" separated by ","<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  @VisibleForTesting<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public static String standardizeZKQuorumServerString(String quorumStringInput,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      String clientPort) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    String[] serverHosts = quorumStringInput.split(",");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return buildZKQuorumServerString(serverHosts, clientPort);<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>  // The Quorum for the ZK cluster can have one the following format (see examples below):<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // (1). s1,s2,s3 (no client port in the list, the client port could be obtained from clientPort)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // (2). s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  //      in this case, the clientPort would be ignored)<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // (3). s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  //      the clientPort; otherwise, it would use the specified port)<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @VisibleForTesting<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public static class ZKClusterKey {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private String quorumString;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    private int clientPort;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    private String znodeParent;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    ZKClusterKey(String quorumString, int clientPort, String znodeParent) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      this.quorumString = quorumString;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      this.clientPort = clientPort;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      this.znodeParent = znodeParent;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    public String getQuorumString() {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return quorumString;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    public int getClientPort() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      return clientPort;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>    public String getZnodeParent() {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      return znodeParent;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Get the client ZK Quorum servers string<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @param conf the configuration to read<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @return Client quorum servers, or null if not specified<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public static String getClientZKQuorumServersString(Configuration conf) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    String clientQuromServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    if (clientQuromServers == null) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      return null;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    int defaultClientPort =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    String clientZkClientPort =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        Integer.toString(conf.getInt(HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT, defaultClientPort));<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    final String[] serverHosts = StringUtils.getStrings(clientQuromServers);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return buildZKQuorumServerString(serverHosts, clientZkClientPort);<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>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
index 9b42e6b..6c6f61c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
@@ -32,293 +32,313 @@
 <span class="sourceLineNo">024</span><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.HConstants;<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.27"></a>
-<span class="sourceLineNo">028</span><a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.29"></a>
-<span class="sourceLineNo">030</span><a name="line.30"></a>
-<span class="sourceLineNo">031</span>/**<a name="line.31"></a>
-<span class="sourceLineNo">032</span> * Utility methods for reading, and building the ZooKeeper configuration.<a name="line.32"></a>
-<span class="sourceLineNo">033</span> *<a name="line.33"></a>
-<span class="sourceLineNo">034</span> * The order and priority for reading the config are as follows:<a name="line.34"></a>
-<span class="sourceLineNo">035</span> * (1). Property with "hbase.zookeeper.property." prefix from HBase XML<a name="line.35"></a>
-<span class="sourceLineNo">036</span> * (2). other zookeeper related properties in HBASE XML<a name="line.36"></a>
-<span class="sourceLineNo">037</span> */<a name="line.37"></a>
-<span class="sourceLineNo">038</span>@InterfaceAudience.Private<a name="line.38"></a>
-<span class="sourceLineNo">039</span>public final class ZKConfig {<a name="line.39"></a>
-<span class="sourceLineNo">040</span><a name="line.40"></a>
-<span class="sourceLineNo">041</span>  private static final String VARIABLE_START = "${";<a name="line.41"></a>
-<span class="sourceLineNo">042</span><a name="line.42"></a>
-<span class="sourceLineNo">043</span>  private ZKConfig() {<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
-<span class="sourceLineNo">045</span><a name="line.45"></a>
-<span class="sourceLineNo">046</span>  /**<a name="line.46"></a>
-<span class="sourceLineNo">047</span>   * Make a Properties object holding ZooKeeper config.<a name="line.47"></a>
-<span class="sourceLineNo">048</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.48"></a>
-<span class="sourceLineNo">049</span>   * and generates the appropriate ZooKeeper properties.<a name="line.49"></a>
-<span class="sourceLineNo">050</span>   * @param conf Configuration to read from.<a name="line.50"></a>
-<span class="sourceLineNo">051</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.51"></a>
-<span class="sourceLineNo">052</span>   */<a name="line.52"></a>
-<span class="sourceLineNo">053</span>  public static Properties makeZKProps(Configuration conf) {<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    return makeZKPropsFromHbaseConfig(conf);<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>  /**<a name="line.57"></a>
-<span class="sourceLineNo">058</span>   * Make a Properties object holding ZooKeeper config.<a name="line.58"></a>
-<span class="sourceLineNo">059</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.59"></a>
-<span class="sourceLineNo">060</span>   * and generates the appropriate ZooKeeper properties.<a name="line.60"></a>
-<span class="sourceLineNo">061</span>   *<a name="line.61"></a>
-<span class="sourceLineNo">062</span>   * @param conf Configuration to read from.<a name="line.62"></a>
-<span class="sourceLineNo">063</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.63"></a>
-<span class="sourceLineNo">064</span>   */<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  private static Properties makeZKPropsFromHbaseConfig(Configuration conf) {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    Properties zkProperties = new Properties();<a name="line.66"></a>
-<span class="sourceLineNo">067</span><a name="line.67"></a>
-<span class="sourceLineNo">068</span>    // Directly map all of the hbase.zookeeper.property.KEY properties.<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // Synchronize on conf so no loading of configs while we iterate<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    synchronized (conf) {<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      for (Entry&lt;String, String&gt; entry : conf) {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>        String key = entry.getKey();<a name="line.72"></a>
-<span class="sourceLineNo">073</span>        if (key.startsWith(HConstants.ZK_CFG_PROPERTY_PREFIX)) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>          String zkKey = key.substring(HConstants.ZK_CFG_PROPERTY_PREFIX_LEN);<a name="line.74"></a>
-<span class="sourceLineNo">075</span>          String value = entry.getValue();<a name="line.75"></a>
-<span class="sourceLineNo">076</span>          // If the value has variables substitutions, need to do a get.<a name="line.76"></a>
-<span class="sourceLineNo">077</span>          if (value.contains(VARIABLE_START)) {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>            value = conf.get(key);<a name="line.78"></a>
-<span class="sourceLineNo">079</span>          }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>          zkProperties.setProperty(zkKey, value);<a name="line.80"></a>
-<span class="sourceLineNo">081</span>        }<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      }<a name="line.82"></a>
-<span class="sourceLineNo">083</span>    }<a name="line.83"></a>
-<span class="sourceLineNo">084</span><a name="line.84"></a>
-<span class="sourceLineNo">085</span>    // If clientPort is not set, assign the default.<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    if (zkProperties.getProperty(HConstants.CLIENT_PORT_STR) == null) {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      zkProperties.put(HConstants.CLIENT_PORT_STR,<a name="line.87"></a>
-<span class="sourceLineNo">088</span>          HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT);<a name="line.88"></a>
-<span class="sourceLineNo">089</span>    }<a name="line.89"></a>
-<span class="sourceLineNo">090</span><a name="line.90"></a>
-<span class="sourceLineNo">091</span>    // Create the server.X properties.<a name="line.91"></a>
-<span class="sourceLineNo">092</span>    int peerPort = conf.getInt("hbase.zookeeper.peerport", 2888);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    int leaderPort = conf.getInt("hbase.zookeeper.leaderport", 3888);<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    final String[] serverHosts = conf.getStrings(HConstants.ZOOKEEPER_QUORUM,<a name="line.95"></a>
-<span class="sourceLineNo">096</span>                                                 HConstants.LOCALHOST);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    String serverHost;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    String address;<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    String key;<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      if (serverHosts[i].contains(":")) {<a name="line.101"></a>
-<span class="sourceLineNo">102</span>        serverHost = serverHosts[i].substring(0, serverHosts[i].indexOf(':'));<a name="line.102"></a>
-<span class="sourceLineNo">103</span>      } else {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>        serverHost = serverHosts[i];<a name="line.104"></a>
-<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      address = serverHost + ":" + peerPort + ":" + leaderPort;<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      key = "server." + i;<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      zkProperties.put(key, address);<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>    return zkProperties;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>  }<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>  /**<a name="line.114"></a>
-<span class="sourceLineNo">115</span>   * Return the ZK Quorum servers string given the specified configuration<a name="line.115"></a>
-<span class="sourceLineNo">116</span>   *<a name="line.116"></a>
-<span class="sourceLineNo">117</span>   * @param conf<a name="line.117"></a>
-<span class="sourceLineNo">118</span>   * @return Quorum servers String<a name="line.118"></a>
-<span class="sourceLineNo">119</span>   */<a name="line.119"></a>
-<span class="sourceLineNo">120</span>  private static String getZKQuorumServersStringFromHbaseConfig(Configuration conf) {<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    String defaultClientPort = Integer.toString(<a name="line.121"></a>
-<span class="sourceLineNo">122</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT));<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    final String[] serverHosts =<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        conf.getStrings(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    return buildZKQuorumServerString(serverHosts, defaultClientPort);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  }<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>  /**<a name="line.130"></a>
-<span class="sourceLineNo">131</span>   * Return the ZK Quorum servers string given the specified configuration.<a name="line.131"></a>
-<span class="sourceLineNo">132</span>   * @return Quorum servers<a name="line.132"></a>
-<span class="sourceLineNo">133</span>   */<a name="line.133"></a>
-<span class="sourceLineNo">134</span>  public static String getZKQuorumServersString(Configuration conf) {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    return getZKQuorumServersStringFromHbaseConfig(conf);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>  }<a name="line.136"></a>
-<span class="sourceLineNo">137</span><a name="line.137"></a>
-<span class="sourceLineNo">138</span>  /**<a name="line.138"></a>
-<span class="sourceLineNo">139</span>   * Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.139"></a>
-<span class="sourceLineNo">140</span>   *<a name="line.140"></a>
-<span class="sourceLineNo">141</span>   * @param serverHosts a list of servers for ZK quorum<a name="line.141"></a>
-<span class="sourceLineNo">142</span>   * @param clientPort the default client port<a name="line.142"></a>
-<span class="sourceLineNo">143</span>   * @return the string for a list of "server:port" separated by ","<a name="line.143"></a>
-<span class="sourceLineNo">144</span>   */<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static String buildZKQuorumServerString(String[] serverHosts, String clientPort) {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    StringBuilder quorumStringBuilder = new StringBuilder();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    String serverHost;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      if (serverHosts[i].contains(":")) {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        serverHost = serverHosts[i]; // just use the port specified from the input<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      } else {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        serverHost = serverHosts[i] + ":" + clientPort;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      }<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      if (i &gt; 0) {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>        quorumStringBuilder.append(',');<a name="line.155"></a>
-<span class="sourceLineNo">156</span>      }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>      quorumStringBuilder.append(serverHost);<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    return quorumStringBuilder.toString();<a name="line.159"></a>
-<span class="sourceLineNo">160</span>  }<a name="line.160"></a>
-<span class="sourceLineNo">161</span><a name="line.161"></a>
-<span class="sourceLineNo">162</span>  /**<a name="line.162"></a>
-<span class="sourceLineNo">163</span>   * Verifies that the given key matches the expected format for a ZooKeeper cluster key.<a name="line.163"></a>
-<span class="sourceLineNo">164</span>   * The Quorum for the ZK cluster can have one the following formats (see examples below):<a name="line.164"></a>
-<span class="sourceLineNo">165</span>   *<a name="line.165"></a>
-<span class="sourceLineNo">166</span>   * &lt;ol&gt;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>   *   &lt;li&gt;s1,s2,s3 (no client port in the list, the client port could be obtained from<a name="line.167"></a>
-<span class="sourceLineNo">168</span>   *       clientPort)&lt;/li&gt;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>   *   &lt;li&gt;s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.169"></a>
-<span class="sourceLineNo">170</span>   *       in this case, the clientPort would be ignored)&lt;/li&gt;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>   *   &lt;li&gt;s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.171"></a>
-<span class="sourceLineNo">172</span>   *       the clientPort; otherwise, it would use the specified port)&lt;/li&gt;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>   * &lt;/ol&gt;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>   *<a name="line.174"></a>
-<span class="sourceLineNo">175</span>   * @param key the cluster key to validate<a name="line.175"></a>
-<span class="sourceLineNo">176</span>   * @throws IOException if the key could not be parsed<a name="line.176"></a>
-<span class="sourceLineNo">177</span>   */<a name="line.177"></a>
-<span class="sourceLineNo">178</span>  public static void validateClusterKey(String key) throws IOException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    transformClusterKey(key);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>  /**<a name="line.182"></a>
-<span class="sourceLineNo">183</span>   * Separate the given key into the three configurations it should contain:<a name="line.183"></a>
-<span class="sourceLineNo">184</span>   * hbase.zookeeper.quorum, hbase.zookeeper.client.port<a name="line.184"></a>
-<span class="sourceLineNo">185</span>   * and zookeeper.znode.parent<a name="line.185"></a>
-<span class="sourceLineNo">186</span>   * @param key<a name="line.186"></a>
-<span class="sourceLineNo">187</span>   * @return the three configuration in the described order<a name="line.187"></a>
-<span class="sourceLineNo">188</span>   * @throws IOException<a name="line.188"></a>
-<span class="sourceLineNo">189</span>   */<a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public static ZKClusterKey transformClusterKey(String key) throws IOException {<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    String[] parts = key.split(":");<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>    if (parts.length == 3) {<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      if (!parts[2].matches("/.*[^/]")) {<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.195"></a>
-<span class="sourceLineNo">196</span>            HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.196"></a>
-<span class="sourceLineNo">197</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      return new ZKClusterKey(parts [0], Integer.parseInt(parts [1]), parts [2]);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    }<a name="line.200"></a>
-<span class="sourceLineNo">201</span><a name="line.201"></a>
-<span class="sourceLineNo">202</span>    if (parts.length &gt; 3) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // The quorum could contain client port in server:clientport format, try to transform more.<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      String zNodeParent = parts [parts.length - 1];<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      if (!zNodeParent.matches("/.*[^/]")) {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:"<a name="line.206"></a>
-<span class="sourceLineNo">207</span>            + HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.207"></a>
-<span class="sourceLineNo">208</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<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>      String clientPort = parts [parts.length - 2];<a name="line.211"></a>
-<span class="sourceLineNo">212</span><a name="line.212"></a>
-<span class="sourceLineNo">213</span>      // The first part length is the total length minus the lengths of other parts and minus 2 ":"<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      int endQuorumIndex = key.length() - zNodeParent.length() - clientPort.length() - 2;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      String quorumStringInput = key.substring(0, endQuorumIndex);<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      String[] serverHosts = quorumStringInput.split(",");<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>      // The common case is that every server has its own client port specified - this means<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      // that (total parts - the ZNodeParent part - the ClientPort part) is equal to<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // (the number of "," + 1) - "+ 1" because the last server has no ",".<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if ((parts.length - 2) == (serverHosts.length + 1)) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return new ZKClusterKey(quorumStringInput, Integer.parseInt(clientPort), zNodeParent);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span><a name="line.224"></a>
-<span class="sourceLineNo">225</span>      // For the uncommon case that some servers has no port specified, we need to build the<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      // server:clientport list using default client port for servers without specified port.<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      return new ZKClusterKey(<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          buildZKQuorumServerString(serverHosts, clientPort),<a name="line.228"></a>
-<span class="sourceLineNo">229</span>          Integer.parseInt(clientPort),<a name="line.229"></a>
-<span class="sourceLineNo">230</span>          zNodeParent);<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>    throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  }<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /**<a name="line.238"></a>
-<span class="sourceLineNo">239</span>   * Get the key to the ZK ensemble for this configuration without<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * adding a name at the end<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * @param conf Configuration to use to build the key<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   * @return ensemble key without a name<a name="line.242"></a>
-<span class="sourceLineNo">243</span>   */<a name="line.243"></a>
-<span class="sourceLineNo">244</span>  public static String getZooKeeperClusterKey(Configuration conf) {<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    return getZooKeeperClusterKey(conf, null);<a name="line.245"></a>
-<span class="sourceLineNo">246</span>  }<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>   * Get the key to the ZK ensemble for this configuration and append<a name="line.249"></a>
-<span class="sourceLineNo">250</span>   * a name at the end<a name="line.250"></a>
-<span class="sourceLineNo">251</span>   * @param conf Configuration to use to build the key<a name="line.251"></a>
-<span class="sourceLineNo">252</span>   * @param name Name that should be appended at the end if not empty or null<a name="line.252"></a>
-<span class="sourceLineNo">253</span>   * @return ensemble key with a name (if any)<a name="line.253"></a>
-<span class="sourceLineNo">254</span>   */<a name="line.254"></a>
-<span class="sourceLineNo">255</span>  public static String getZooKeeperClusterKey(Configuration conf, String name) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    String ensemble = conf.get(HConstants.ZOOKEEPER_QUORUM).replaceAll(<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        "[\\t\\n\\x0B\\f\\r]", "");<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    StringBuilder builder = new StringBuilder(ensemble);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    builder.append(":");<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    builder.append(conf.get(HConstants.ZOOKEEPER_CLIENT_PORT));<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    builder.append(":");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    builder.append(conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT));<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    if (name != null &amp;&amp; !name.isEmpty()) {<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      builder.append(",");<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      builder.append(name);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return builder.toString();<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>   * Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','<a name="line.271"></a>
-<span class="sourceLineNo">272</span>   * @param quorumStringInput a string contains a list of servers for ZK quorum<a name="line.272"></a>
-<span class="sourceLineNo">273</span>   * @param clientPort the default client port<a name="line.273"></a>
-<span class="sourceLineNo">274</span>   * @return the string for a list of "server:port" separated by ","<a name="line.274"></a>
-<span class="sourceLineNo">275</span>   */<a name="line.275"></a>
-<span class="sourceLineNo">276</span>  @VisibleForTesting<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  public static String standardizeZKQuorumServerString(String quorumStringInput,<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      String clientPort) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    String[] serverHosts = quorumStringInput.split(",");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>    return buildZKQuorumServerString(serverHosts, clientPort);<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  }<a name="line.281"></a>
-<span class="sourceLineNo">282</span><a name="line.282"></a>
-<span class="sourceLineNo">283</span>  // The Quorum for the ZK cluster can have one the following format (see examples below):<a name="line.283"></a>
-<span class="sourceLineNo">284</span>  // (1). s1,s2,s3 (no client port in the list, the client port could be obtained from clientPort)<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  // (2). s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  //      in this case, the clientPort would be ignored)<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  // (3). s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  //      the clientPort; otherwise, it would use the specified port)<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  @VisibleForTesting<a name="line.289"></a>
-<span class="sourceLineNo">290</span>  public static class ZKClusterKey {<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    private String quorumString;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    private int clientPort;<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    private String znodeParent;<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>    ZKClusterKey(String quorumString, int clientPort, String znodeParent) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      this.quorumString = quorumString;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      this.clientPort = clientPort;<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      this.znodeParent = znodeParent;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span><a name="line.300"></a>
-<span class="sourceLineNo">301</span>    public String getQuorumString() {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      return quorumString;<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>    public int getClientPort() {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      return clientPort;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    public String getZnodeParent() {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      return znodeParent;<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  }<a name="line.312"></a>
-<span class="sourceLineNo">313</span>}<a name="line.313"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.28"></a>
+<span class="sourceLineNo">029</span><a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.30"></a>
+<span class="sourceLineNo">031</span><a name="line.31"></a>
+<span class="sourceLineNo">032</span>/**<a name="line.32"></a>
+<span class="sourceLineNo">033</span> * Utility methods for reading, and building the ZooKeeper configuration.<a name="line.33"></a>
+<span class="sourceLineNo">034</span> *<a name="line.34"></a>
+<span class="sourceLineNo">035</span> * The order and priority for reading the config are as follows:<a name="line.35"></a>
+<span class="sourceLineNo">036</span> * (1). Property with "hbase.zookeeper.property." prefix from HBase XML<a name="line.36"></a>
+<span class="sourceLineNo">037</span> * (2). other zookeeper related properties in HBASE XML<a name="line.37"></a>
+<span class="sourceLineNo">038</span> */<a name="line.38"></a>
+<span class="sourceLineNo">039</span>@InterfaceAudience.Private<a name="line.39"></a>
+<span class="sourceLineNo">040</span>public final class ZKConfig {<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  private static final String VARIABLE_START = "${";<a name="line.42"></a>
+<span class="sourceLineNo">043</span><a name="line.43"></a>
+<span class="sourceLineNo">044</span>  private ZKConfig() {<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span><a name="line.46"></a>
+<span class="sourceLineNo">047</span>  /**<a name="line.47"></a>
+<span class="sourceLineNo">048</span>   * Make a Properties object holding ZooKeeper config.<a name="line.48"></a>
+<span class="sourceLineNo">049</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.49"></a>
+<span class="sourceLineNo">050</span>   * and generates the appropriate ZooKeeper properties.<a name="line.50"></a>
+<span class="sourceLineNo">051</span>   * @param conf Configuration to read from.<a name="line.51"></a>
+<span class="sourceLineNo">052</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>   */<a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public static Properties makeZKProps(Configuration conf) {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    return makeZKPropsFromHbaseConfig(conf);<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  }<a name="line.56"></a>
+<span class="sourceLineNo">057</span><a name="line.57"></a>
+<span class="sourceLineNo">058</span>  /**<a name="line.58"></a>
+<span class="sourceLineNo">059</span>   * Make a Properties object holding ZooKeeper config.<a name="line.59"></a>
+<span class="sourceLineNo">060</span>   * Parses the corresponding config options from the HBase XML configs<a name="line.60"></a>
+<span class="sourceLineNo">061</span>   * and generates the appropriate ZooKeeper properties.<a name="line.61"></a>
+<span class="sourceLineNo">062</span>   *<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * @param conf Configuration to read from.<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @return Properties holding mappings representing ZooKeeper config file.<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  private static Properties makeZKPropsFromHbaseConfig(Configuration conf) {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    Properties zkProperties = new Properties();<a name="line.67"></a>
+<span class="sourceLineNo">068</span><a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // Directly map all of the hbase.zookeeper.property.KEY properties.<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    // Synchronize on conf so no loading of configs while we iterate<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    synchronized (conf) {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      for (Entry&lt;String, String&gt; entry : conf) {<a name="line.72"></a>
+<span class="sourceLineNo">073</span>        String key = entry.getKey();<a name="line.73"></a>
+<span class="sourceLineNo">074</span>        if (key.startsWith(HConstants.ZK_CFG_PROPERTY_PREFIX)) {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>          String zkKey = key.substring(HConstants.ZK_CFG_PROPERTY_PREFIX_LEN);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>          String value = entry.getValue();<a name="line.76"></a>
+<span class="sourceLineNo">077</span>          // If the value has variables substitutions, need to do a get.<a name="line.77"></a>
+<span class="sourceLineNo">078</span>          if (value.contains(VARIABLE_START)) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>            value = conf.get(key);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>          }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>          zkProperties.setProperty(zkKey, value);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>      }<a name="line.83"></a>
+<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
+<span class="sourceLineNo">085</span><a name="line.85"></a>
+<span class="sourceLineNo">086</span>    // If clientPort is not set, assign the default.<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    if (zkProperties.getProperty(HConstants.CLIENT_PORT_STR) == null) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      zkProperties.put(HConstants.CLIENT_PORT_STR,<a name="line.88"></a>
+<span class="sourceLineNo">089</span>          HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT);<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>    // Create the server.X properties.<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    int peerPort = conf.getInt("hbase.zookeeper.peerport", 2888);<a name="line.93"></a>
+<span class="sourceLineNo">094</span>    int leaderPort = conf.getInt("hbase.zookeeper.leaderport", 3888);<a name="line.94"></a>
+<span class="sourceLineNo">095</span><a name="line.95"></a>
+<span class="sourceLineNo">096</span>    final String[] serverHosts = conf.getStrings(HConstants.ZOOKEEPER_QUORUM,<a name="line.96"></a>
+<span class="sourceLineNo">097</span>                                                 HConstants.LOCALHOST);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    String serverHost;<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    String address;<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    String key;<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      if (serverHosts[i].contains(":")) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        serverHost = serverHosts[i].substring(0, serverHosts[i].indexOf(':'));<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      } else {<a name="line.104"></a>
+<span class="sourceLineNo">105</span>        serverHost = serverHosts[i];<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      address = serverHost + ":" + peerPort + ":" + leaderPort;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      key = "server." + i;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      zkProperties.put(key, address);<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 zkProperties;<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>  /**<a name="line.115"></a>
+<span class="sourceLineNo">116</span>   * Return the ZK Quorum servers string given the specified configuration<a name="line.116"></a>
+<span class="sourceLineNo">117</span>   *<a name="line.117"></a>
+<span class="sourceLineNo">118</span>   * @param conf<a name="line.118"></a>
+<span class="sourceLineNo">119</span>   * @return Quorum servers String<a name="line.119"></a>
+<span class="sourceLineNo">120</span>   */<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  private static String getZKQuorumServersStringFromHbaseConfig(Configuration conf) {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    String defaultClientPort = Integer.toString(<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT));<a name="line.123"></a>
+<span class="sourceLineNo">124</span><a name="line.124"></a>
+<span class="sourceLineNo">125</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    final String[] serverHosts =<a name="line.126"></a>
+<span class="sourceLineNo">127</span>        conf.getStrings(HConstants.ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    return buildZKQuorumServerString(serverHosts, defaultClientPort);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>  }<a name="line.129"></a>
+<span class="sourceLineNo">130</span><a name="line.130"></a>
+<span class="sourceLineNo">131</span>  /**<a name="line.131"></a>
+<span class="sourceLineNo">132</span>   * Return the ZK Quorum servers string given the specified configuration.<a name="line.132"></a>
+<span class="sourceLineNo">133</span>   * @return Quorum servers<a name="line.133"></a>
+<span class="sourceLineNo">134</span>   */<a name="line.134"></a>
+<span class="sourceLineNo">135</span>  public static String getZKQuorumServersString(Configuration conf) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    return getZKQuorumServersStringFromHbaseConfig(conf);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>  /**<a name="line.139"></a>
+<span class="sourceLineNo">140</span>   * Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.140"></a>
+<span class="sourceLineNo">141</span>   *<a name="line.141"></a>
+<span class="sourceLineNo">142</span>   * @param serverHosts a list of servers for ZK quorum<a name="line.142"></a>
+<span class="sourceLineNo">143</span>   * @param clientPort the default client port<a name="line.143"></a>
+<span class="sourceLineNo">144</span>   * @return the string for a list of "server:port" separated by ","<a name="line.144"></a>
+<span class="sourceLineNo">145</span>   */<a name="line.145"></a>
+<span class="sourceLineNo">146</span>  public static String buildZKQuorumServerString(String[] serverHosts, String clientPort) {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    StringBuilder quorumStringBuilder = new StringBuilder();<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    String serverHost;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    for (int i = 0; i &lt; serverHosts.length; ++i) {<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      if (serverHosts[i].contains(":")) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        serverHost = serverHosts[i]; // just use the port specified from the input<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      } else {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>        serverHost = serverHosts[i] + ":" + clientPort;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      if (i &gt; 0) {<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        quorumStringBuilder.append(',');<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      }<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      quorumStringBuilder.append(serverHost);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    return quorumStringBuilder.toString();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>  }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>  /**<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   * Verifies that the given key matches the expected format for a ZooKeeper cluster key.<a name="line.164"></a>
+<span class="sourceLineNo">165</span>   * The Quorum for the ZK cluster can have one the following formats (see examples below):<a name="line.165"></a>
+<span class="sourceLineNo">166</span>   *<a name="line.166"></a>
+<span class="sourceLineNo">167</span>   * &lt;ol&gt;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>   *   &lt;li&gt;s1,s2,s3 (no client port in the list, the client port could be obtained from<a name="line.168"></a>
+<span class="sourceLineNo">169</span>   *       clientPort)&lt;/li&gt;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>   *   &lt;li&gt;s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.170"></a>
+<span class="sourceLineNo">171</span>   *       in this case, the clientPort would be ignored)&lt;/li&gt;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>   *   &lt;li&gt;s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.172"></a>
+<span class="sourceLineNo">173</span>   *       the clientPort; otherwise, it would use the specified port)&lt;/li&gt;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>   * &lt;/ol&gt;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>   *<a name="line.175"></a>
+<span class="sourceLineNo">176</span>   * @param key the cluster key to validate<a name="line.176"></a>
+<span class="sourceLineNo">177</span>   * @throws IOException if the key could not be parsed<a name="line.177"></a>
+<span class="sourceLineNo">178</span>   */<a name="line.178"></a>
+<span class="sourceLineNo">179</span>  public static void validateClusterKey(String key) throws IOException {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    transformClusterKey(key);<a name="line.180"></a>
+<span class="sourceLineNo">181</span>  }<a name="line.181"></a>
+<span class="sourceLineNo">182</span><a name="line.182"></a>
+<span class="sourceLineNo">183</span>  /**<a name="line.183"></a>
+<span class="sourceLineNo">184</span>   * Separate the given key into the three configurations it should contain:<a name="line.184"></a>
+<span class="sourceLineNo">185</span>   * hbase.zookeeper.quorum, hbase.zookeeper.client.port<a name="line.185"></a>
+<span class="sourceLineNo">186</span>   * and zookeeper.znode.parent<a name="line.186"></a>
+<span class="sourceLineNo">187</span>   * @param key<a name="line.187"></a>
+<span class="sourceLineNo">188</span>   * @return the three configuration in the described order<a name="line.188"></a>
+<span class="sourceLineNo">189</span>   * @throws IOException<a name="line.189"></a>
+<span class="sourceLineNo">190</span>   */<a name="line.190"></a>
+<span class="sourceLineNo">191</span>  public static ZKClusterKey transformClusterKey(String key) throws IOException {<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    String[] parts = key.split(":");<a name="line.192"></a>
+<span class="sourceLineNo">193</span><a name="line.193"></a>
+<span class="sourceLineNo">194</span>    if (parts.length == 3) {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      if (!parts[2].matches("/.*[^/]")) {<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.196"></a>
+<span class="sourceLineNo">197</span>            HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.197"></a>
+<span class="sourceLineNo">198</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      return new ZKClusterKey(parts [0], Integer.parseInt(parts [1]), parts [2]);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span><a name="line.202"></a>
+<span class="sourceLineNo">203</span>    if (parts.length &gt; 3) {<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      // The quorum could contain client port in server:clientport format, try to transform more.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>      String zNodeParent = parts [parts.length - 1];<a name="line.205"></a>
+<span class="sourceLineNo">206</span>      if (!zNodeParent.matches("/.*[^/]")) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        throw new IOException("Cluster key passed " + key + " is invalid, the format should be:"<a name="line.207"></a>
+<span class="sourceLineNo">208</span>            + HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            + HConstants.ZOOKEEPER_ZNODE_PARENT);<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>      String clientPort = parts [parts.length - 2];<a name="line.212"></a>
+<span class="sourceLineNo">213</span><a name="line.213"></a>
+<span class="sourceLineNo">214</span>      // The first part length is the total length minus the lengths of other parts and minus 2 ":"<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      int endQuorumIndex = key.length() - zNodeParent.length() - clientPort.length() - 2;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      String quorumStringInput = key.substring(0, endQuorumIndex);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      String[] serverHosts = quorumStringInput.split(",");<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>      // The common case is that every server has its own client port specified - this means<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      // that (total parts - the ZNodeParent part - the ClientPort part) is equal to<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      // (the number of "," + 1) - "+ 1" because the last server has no ",".<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      if ((parts.length - 2) == (serverHosts.length + 1)) {<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        return new ZKClusterKey(quorumStringInput, Integer.parseInt(clientPort), zNodeParent);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>      // For the uncommon case that some servers has no port specified, we need to build the<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      // server:clientport list using default client port for servers without specified port.<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      return new ZKClusterKey(<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          buildZKQuorumServerString(serverHosts, clientPort),<a name="line.229"></a>
+<span class="sourceLineNo">230</span>          Integer.parseInt(clientPort),<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          zNodeParent);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
+<span class="sourceLineNo">233</span><a name="line.233"></a>
+<span class="sourceLineNo">234</span>    throw new IOException("Cluster key passed " + key + " is invalid, the format should be:" +<a name="line.234"></a>
+<span class="sourceLineNo">235</span>        HConstants.ZOOKEEPER_QUORUM + ":" + HConstants.ZOOKEEPER_CLIENT_PORT + ":"<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        + HConstants.ZOOKEEPER_ZNODE_PARENT);<a name="line.236"></a>
+<span class="sourceLineNo">237</span>  }<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
+<span class="sourceLineNo">240</span>   * Get the key to the ZK ensemble for this configuration without<a name="line.240"></a>
+<span class="sourceLineNo">241</span>   * adding a name at the end<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * @param conf Configuration to use to build the key<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * @return ensemble key without a name<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  public static String getZooKeeperClusterKey(Configuration conf) {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    return getZooKeeperClusterKey(conf, null);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>  }<a name="line.247"></a>
+<span class="sourceLineNo">248</span><a name="line.248"></a>
+<span class="sourceLineNo">249</span>  /**<a name="line.249"></a>
+<span class="sourceLineNo">250</span>   * Get the key to the ZK ensemble for this configuration and append<a name="line.250"></a>
+<span class="sourceLineNo">251</span>   * a name at the end<a name="line.251"></a>
+<span class="sourceLineNo">252</span>   * @param conf Configuration to use to build the key<a name="line.252"></a>
+<span class="sourceLineNo">253</span>   * @param name Name that should be appended at the end if not empty or null<a name="line.253"></a>
+<span class="sourceLineNo">254</span>   * @return ensemble key with a name (if any)<a name="line.254"></a>
+<span class="sourceLineNo">255</span>   */<a name="line.255"></a>
+<span class="sourceLineNo">256</span>  public static String getZooKeeperClusterKey(Configuration conf, String name) {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    String ensemble = conf.get(HConstants.ZOOKEEPER_QUORUM).replaceAll(<a name="line.257"></a>
+<span class="sourceLineNo">258</span>        "[\\t\\n\\x0B\\f\\r]", "");<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    StringBuilder builder = new StringBuilder(ensemble);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    builder.append(":");<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    builder.append(conf.get(HConstants.ZOOKEEPER_CLIENT_PORT));<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    builder.append(":");<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    builder.append(conf.get(HConstants.ZOOKEEPER_ZNODE_PARENT));<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    if (name != null &amp;&amp; !name.isEmpty()) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      builder.append(",");<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      builder.append(name);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    return builder.toString();<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>   * Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','<a name="line.272"></a>
+<span class="sourceLineNo">273</span>   * @param quorumStringInput a string contains a list of servers for ZK quorum<a name="line.273"></a>
+<span class="sourceLineNo">274</span>   * @param clientPort the default client port<a name="line.274"></a>
+<span class="sourceLineNo">275</span>   * @return the string for a list of "server:port" separated by ","<a name="line.275"></a>
+<span class="sourceLineNo">276</span>   */<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  @VisibleForTesting<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public static String standardizeZKQuorumServerString(String quorumStringInput,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      String clientPort) {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    String[] serverHosts = quorumStringInput.split(",");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    return buildZKQuorumServerString(serverHosts, clientPort);<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>  // The Quorum for the ZK cluster can have one the following format (see examples below):<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  // (1). s1,s2,s3 (no client port in the list, the client port could be obtained from clientPort)<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  // (2). s1:p1,s2:p2,s3:p3 (with client port, which could be same or different for each server,<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  //      in this case, the clientPort would be ignored)<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  // (3). s1:p1,s2,s3:p3 (mix of (1) and (2) - if port is not specified in a server, it would use<a name="line.288"></a>
+<span class="sourceLineNo">289</span>  //      the clientPort; otherwise, it would use the specified port)<a name="line.289"></a>
+<span class="sourceLineNo">290</span>  @VisibleForTesting<a name="line.290"></a>
+<span class="sourceLineNo">291</span>  public static class ZKClusterKey {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    private String quorumString;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>    private int clientPort;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    private String znodeParent;<a name="line.294"></a>
+<span class="sourceLineNo">295</span><a name="line.295"></a>
+<span class="sourceLineNo">296</span>    ZKClusterKey(String quorumString, int clientPort, String znodeParent) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      this.quorumString = quorumString;<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      this.clientPort = clientPort;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      this.znodeParent = znodeParent;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    }<a name="line.300"></a>
+<span class="sourceLineNo">301</span><a name="line.301"></a>
+<span class="sourceLineNo">302</span>    public String getQuorumString() {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      return quorumString;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>    }<a name="line.304"></a>
+<span class="sourceLineNo">305</span><a name="line.305"></a>
+<span class="sourceLineNo">306</span>    public int getClientPort() {<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      return clientPort;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    }<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>    public String getZnodeParent() {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      return znodeParent;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    }<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  /**<a name="line.315"></a>
+<span class="sourceLineNo">316</span>   * Get the client ZK Quorum servers string<a name="line.316"></a>
+<span class="sourceLineNo">317</span>   * @param conf the configuration to read<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * @return Client quorum servers, or null if not specified<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  public static String getClientZKQuorumServersString(Configuration conf) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    String clientQuromServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    if (clientQuromServers == null) {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      return null;<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    int defaultClientPort =<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        conf.getInt(HConstants.ZOOKEEPER_CLIENT_PORT, HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT);<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    String clientZkClientPort =<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        Integer.toString(conf.getInt(HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT, defaultClientPort));<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    // Build the ZK quorum server string with "server:clientport" list, separated by ','<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    final String[] serverHosts = StringUtils.getStrings(clientQuromServers);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return buildZKQuorumServerString(serverHosts, clientZkClientPort);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
index fe41f3b..d85aaa7 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKServerTool.html
@@ -54,7 +54,7 @@
 <span class="sourceLineNo">046</span>    for (String value : values) {<a name="line.46"></a>
 <span class="sourceLineNo">047</span>      String[] parts = value.split(":");<a name="line.47"></a>
 <span class="sourceLineNo">048</span>      String host = parts[0];<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      int port = HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.49"></a>
+<span class="sourceLineNo">049</span>      int port = HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>      if (parts.length &gt; 1) {<a name="line.50"></a>
 <span class="sourceLineNo">051</span>        port = Integer.parseInt(parts[1]);<a name="line.51"></a>
 <span class="sourceLineNo">052</span>      }<a name="line.52"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.JaasConfiguration.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.NodeAndData.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.CreateAndFailSilent.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.SetData.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
index 0afe061..6d59738 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ZKUtil.html
@@ -1960,7 +1960,7 @@
 <span class="sourceLineNo">1952</span><a name="line.1952"></a>
 <span class="sourceLineNo">1953</span>    String host = sp[0];<a name="line.1953"></a>
 <span class="sourceLineNo">1954</span>    int port = sp.length &gt; 1 ? Integer.parseInt(sp[1])<a name="line.1954"></a>
-<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT;<a name="line.1955"></a>
+<span class="sourceLineNo">1955</span>        : HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT;<a name="line.1955"></a>
 <span class="sourceLineNo">1956</span><a name="line.1956"></a>
 <span class="sourceLineNo">1957</span>    InetSocketAddress sockAddr = new InetSocketAddress(host, port);<a name="line.1957"></a>
 <span class="sourceLineNo">1958</span>    try (Socket socket = new Socket()) {<a name="line.1958"></a>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
index 3ae3ba8..874d891 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
@@ -154,310 +154,314 @@
 <span class="sourceLineNo">146</span>    if (StringUtils.isNotEmpty(replicationCodec)) {<a name="line.146"></a>
 <span class="sourceLineNo">147</span>      this.conf.set(HConstants.RPC_CODEC_CONF_KEY, replicationCodec);<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>  /**<a name="line.151"></a>
-<span class="sourceLineNo">152</span>   * Replicate this array of entries directly into the local cluster using the native client. Only<a name="line.152"></a>
-<span class="sourceLineNo">153</span>   * operates against raw protobuf type saving on a conversion from pb to pojo.<a name="line.153"></a>
-<span class="sourceLineNo">154</span>   * @param replicationClusterId Id which will uniquely identify source cluster FS client<a name="line.154"></a>
-<span class="sourceLineNo">155</span>   *          configurations in the replication configuration directory<a name="line.155"></a>
-<span class="sourceLineNo">156</span>   * @param sourceBaseNamespaceDirPath Path that point to the source cluster base namespace<a name="line.156"></a>
-<span class="sourceLineNo">157</span>   *          directory<a name="line.157"></a>
-<span class="sourceLineNo">158</span>   * @param sourceHFileArchiveDirPath Path that point to the source cluster hfile archive directory<a name="line.158"></a>
-<span class="sourceLineNo">159</span>   * @throws IOException If failed to replicate the data<a name="line.159"></a>
-<span class="sourceLineNo">160</span>   */<a name="line.160"></a>
-<span class="sourceLineNo">161</span>  public void replicateEntries(List&lt;WALEntry&gt; entries, final CellScanner cells,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      String replicationClusterId, String sourceBaseNamespaceDirPath,<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      String sourceHFileArchiveDirPath) throws IOException {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    if (entries.isEmpty()) return;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    // Very simple optimization where we batch sequences of rows going<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // to the same table.<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    try {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      long totalReplicated = 0;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      // Map of table =&gt; list of Rows, grouped by cluster id, we only want to flushCommits once per<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      // invocation of this method per table and cluster id.<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      Map&lt;TableName, Map&lt;List&lt;UUID&gt;, List&lt;Row&gt;&gt;&gt; rowMap = new TreeMap&lt;&gt;();<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>      // Map of table name Vs list of pair of family and list of hfile paths from its namespace<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap = null;<a name="line.174"></a>
-<span class="sourceLineNo">175</span><a name="line.175"></a>
-<span class="sourceLineNo">176</span>      for (WALEntry entry : entries) {<a name="line.176"></a>
-<span class="sourceLineNo">177</span>        TableName table =<a name="line.177"></a>
-<span class="sourceLineNo">178</span>            TableName.valueOf(entry.getKey().getTableName().toByteArray());<a name="line.178"></a>
-<span class="sourceLineNo">179</span>        if (this.walEntrySinkFilter != null) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>          if (this.walEntrySinkFilter.filter(table, entry.getKey().getWriteTime())) {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            // Skip Cells in CellScanner associated with this entry.<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            int count = entry.getAssociatedCellCount();<a name="line.182"></a>
-<span class="sourceLineNo">183</span>            for (int i = 0; i &lt; count; i++) {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>              // Throw index out of bounds if our cell count is off<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              if (!cells.advance()) {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>                throw new ArrayIndexOutOfBoundsException("Expected=" + count + ", index=" + i);<a name="line.186"></a>
-<span class="sourceLineNo">187</span>              }<a name="line.187"></a>
-<span class="sourceLineNo">188</span>            }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>            continue;<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>        Cell previousCell = null;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        Mutation mutation = null;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>        int count = entry.getAssociatedCellCount();<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        for (int i = 0; i &lt; count; i++) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          // Throw index out of bounds if our cell count is off<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          if (!cells.advance()) {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>            throw new ArrayIndexOutOfBoundsException("Expected=" + count + ", index=" + i);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          Cell cell = cells.current();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          // Handle bulk load hfiles replication<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          if (CellUtil.matchingQualifier(cell, WALEdit.BULK_LOAD)) {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>            if (bulkLoadHFileMap == null) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>              bulkLoadHFileMap = new HashMap&lt;&gt;();<a name="line.204"></a>
-<span class="sourceLineNo">205</span>            }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>            buildBulkLoadHFileMap(bulkLoadHFileMap, table, cell);<a name="line.206"></a>
-<span class="sourceLineNo">207</span>          } else {<a name="line.207"></a>
-<span class="sourceLineNo">208</span>            // Handle wal replication<a name="line.208"></a>
-<span class="sourceLineNo">209</span>            if (isNewRowOrType(previousCell, cell)) {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>              // Create new mutation<a name="line.210"></a>
-<span class="sourceLineNo">211</span>              mutation =<a name="line.211"></a>
-<span class="sourceLineNo">212</span>                  CellUtil.isDelete(cell) ? new Delete(cell.getRowArray(), cell.getRowOffset(),<a name="line.212"></a>
-<span class="sourceLineNo">213</span>                      cell.getRowLength()) : new Put(cell.getRowArray(), cell.getRowOffset(),<a name="line.213"></a>
-<span class="sourceLineNo">214</span>                      cell.getRowLength());<a name="line.214"></a>
-<span class="sourceLineNo">215</span>              List&lt;UUID&gt; clusterIds = new ArrayList&lt;&gt;(entry.getKey().getClusterIdsList().size());<a name="line.215"></a>
-<span class="sourceLineNo">216</span>              for (HBaseProtos.UUID clusterId : entry.getKey().getClusterIdsList()) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>                clusterIds.add(toUUID(clusterId));<a name="line.217"></a>
-<span class="sourceLineNo">218</span>              }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>              mutation.setClusterIds(clusterIds);<a name="line.219"></a>
-<span class="sourceLineNo">220</span>              addToHashMultiMap(rowMap, table, clusterIds, mutation);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>            }<a name="line.221"></a>
-<span class="sourceLineNo">222</span>            if (CellUtil.isDelete(cell)) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>              ((Delete) mutation).add(cell);<a name="line.223"></a>
-<span class="sourceLineNo">224</span>            } else {<a name="line.224"></a>
-<span class="sourceLineNo">225</span>              ((Put) mutation).add(cell);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>            }<a name="line.226"></a>
-<span class="sourceLineNo">227</span>            previousCell = cell;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>          }<a name="line.228"></a>
-<span class="sourceLineNo">229</span>        }<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        totalReplicated++;<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>      // TODO Replicating mutations and bulk loaded data can be made parallel<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      if (!rowMap.isEmpty()) {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        LOG.debug("Started replicating mutations.");<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        for (Entry&lt;TableName, Map&lt;List&lt;UUID&gt;, List&lt;Row&gt;&gt;&gt; entry : rowMap.entrySet()) {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          batch(entry.getKey(), entry.getValue().values());<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>        LOG.debug("Finished replicating mutations.");<a name="line.239"></a>
-<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>      if (bulkLoadHFileMap != null &amp;&amp; !bulkLoadHFileMap.isEmpty()) {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>        LOG.debug("Started replicating bulk loaded data.");<a name="line.243"></a>
-<span class="sourceLineNo">244</span>        HFileReplicator hFileReplicator =<a name="line.244"></a>
-<span class="sourceLineNo">245</span>            new HFileReplicator(this.provider.getConf(this.conf, replicationClusterId),<a name="line.245"></a>
-<span class="sourceLineNo">246</span>                sourceBaseNamespaceDirPath, sourceHFileArchiveDirPath, bulkLoadHFileMap, conf,<a name="line.246"></a>
-<span class="sourceLineNo">247</span>                getConnection());<a name="line.247"></a>
-<span class="sourceLineNo">248</span>        hFileReplicator.replicate();<a name="line.248"></a>
-<span class="sourceLineNo">249</span>        LOG.debug("Finished replicating bulk loaded data.");<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>      int size = entries.size();<a name="line.252"></a>
-<span class="sourceLineNo">253</span>      this.metrics.setAgeOfLastAppliedOp(entries.get(size - 1).getKey().getWriteTime());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      this.metrics.applyBatch(size + hfilesReplicated, hfilesReplicated);<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      this.totalReplicatedEdits.addAndGet(totalReplicated);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    } catch (IOException ex) {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      LOG.error("Unable to accept edit because:", ex);<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      throw ex;<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>  }<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>  private void buildBulkLoadHFileMap(<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      final Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap, TableName table,<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      Cell cell) throws IOException {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>    BulkLoadDescriptor bld = WALEdit.getBulkLoadDescriptor(cell);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    List&lt;StoreDescriptor&gt; storesList = bld.getStoresList();<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    int storesSize = storesList.size();<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    for (int j = 0; j &lt; storesSize; j++) {<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      StoreDescriptor storeDescriptor = storesList.get(j);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      List&lt;String&gt; storeFileList = storeDescriptor.getStoreFileList();<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      int storeFilesSize = storeFileList.size();<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      hfilesReplicated += storeFilesSize;<a name="line.272"></a>
-<span class="sourceLineNo">273</span>      for (int k = 0; k &lt; storeFilesSize; k++) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        byte[] family = storeDescriptor.getFamilyName().toByteArray();<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>        // Build hfile relative path from its namespace<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        String pathToHfileFromNS = getHFilePath(table, bld, storeFileList.get(k), family);<a name="line.277"></a>
-<span class="sourceLineNo">278</span><a name="line.278"></a>
-<span class="sourceLineNo">279</span>        String tableName = table.getNameWithNamespaceInclAsString();<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        if (bulkLoadHFileMap.containsKey(tableName)) {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>          List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; familyHFilePathsList = bulkLoadHFileMap.get(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>          boolean foundFamily = false;<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          for (int i = 0; i &lt; familyHFilePathsList.size(); i++) {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>            Pair&lt;byte[], List&lt;String&gt;&gt; familyHFilePathsPair = familyHFilePathsList.get(i);<a name="line.284"></a>
-<span class="sourceLineNo">285</span>            if (Bytes.equals(familyHFilePathsPair.getFirst(), family)) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>              // Found family already present, just add the path to the existing list<a name="line.286"></a>
-<span class="sourceLineNo">287</span>              familyHFilePathsPair.getSecond().add(pathToHfileFromNS);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>              foundFamily = true;<a name="line.288"></a>
-<span class="sourceLineNo">289</span>              break;<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>          if (!foundFamily) {<a name="line.292"></a>
-<span class="sourceLineNo">293</span>            // Family not found, add this family and its hfile paths pair to the list<a name="line.293"></a>
-<span class="sourceLineNo">294</span>            addFamilyAndItsHFilePathToTableInMap(family, pathToHfileFromNS, familyHFilePathsList);<a name="line.294"></a>
+<span class="sourceLineNo">149</span>    // use server ZK cluster for replication, so we unset the client ZK related properties if any<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    if (this.conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM) != null) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      this.conf.unset(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>   }<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>  /**<a name="line.155"></a>
+<span class="sourceLineNo">156</span>   * Replicate this array of entries directly into the local cluster using the native client. Only<a name="line.156"></a>
+<span class="sourceLineNo">157</span>   * operates against raw protobuf type saving on a conversion from pb to pojo.<a name="line.157"></a>
+<span class="sourceLineNo">158</span>   * @param replicationClusterId Id which will uniquely identify source cluster FS client<a name="line.158"></a>
+<span class="sourceLineNo">159</span>   *          configurations in the replication configuration directory<a name="line.159"></a>
+<span class="sourceLineNo">160</span>   * @param sourceBaseNamespaceDirPath Path that point to the source cluster base namespace<a name="line.160"></a>
+<span class="sourceLineNo">161</span>   *          directory<a name="line.161"></a>
+<span class="sourceLineNo">162</span>   * @param sourceHFileArchiveDirPath Path that point to the source cluster hfile archive directory<a name="line.162"></a>
+<span class="sourceLineNo">163</span>   * @throws IOException If failed to replicate the data<a name="line.163"></a>
+<span class="sourceLineNo">164</span>   */<a name="line.164"></a>
+<span class="sourceLineNo">165</span>  public void replicateEntries(List&lt;WALEntry&gt; entries, final CellScanner cells,<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      String replicationClusterId, String sourceBaseNamespaceDirPath,<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      String sourceHFileArchiveDirPath) throws IOException {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (entries.isEmpty()) return;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    // Very simple optimization where we batch sequences of rows going<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    // to the same table.<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      long totalReplicated = 0;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      // Map of table =&gt; list of Rows, grouped by cluster id, we only want to flushCommits once per<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      // invocation of this method per table and cluster id.<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      Map&lt;TableName, Map&lt;List&lt;UUID&gt;, List&lt;Row&gt;&gt;&gt; rowMap = new TreeMap&lt;&gt;();<a name="line.175"></a>
+<span class="sourceLineNo">176</span><a name="line.176"></a>
+<span class="sourceLineNo">177</span>      // Map of table name Vs list of pair of family and list of hfile paths from its namespace<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap = null;<a name="line.178"></a>
+<span class="sourceLineNo">179</span><a name="line.179"></a>
+<span class="sourceLineNo">180</span>      for (WALEntry entry : entries) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        TableName table =<a name="line.181"></a>
+<span class="sourceLineNo">182</span>            TableName.valueOf(entry.getKey().getTableName().toByteArray());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>        if (this.walEntrySinkFilter != null) {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>          if (this.walEntrySinkFilter.filter(table, entry.getKey().getWriteTime())) {<a name="line.184"></a>
+<span class="sourceLineNo">185</span>            // Skip Cells in CellScanner associated with this entry.<a name="line.185"></a>
+<span class="sourceLineNo">186</span>            int count = entry.getAssociatedCellCount();<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            for (int i = 0; i &lt; count; i++) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>              // Throw index out of bounds if our cell count is off<a name="line.188"></a>
+<span class="sourceLineNo">189</span>              if (!cells.advance()) {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>                throw new ArrayIndexOutOfBoundsException("Expected=" + count + ", index=" + i);<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>            continue;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>          }<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        Cell previousCell = null;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        Mutation mutation = null;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        int count = entry.getAssociatedCellCount();<a name="line.198"></a>
+<span class="sourceLineNo">199</span>        for (int i = 0; i &lt; count; i++) {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>          // Throw index out of bounds if our cell count is off<a name="line.200"></a>
+<span class="sourceLineNo">201</span>          if (!cells.advance()) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>            throw new ArrayIndexOutOfBoundsException("Expected=" + count + ", index=" + i);<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          Cell cell = cells.current();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          // Handle bulk load hfiles replication<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          if (CellUtil.matchingQualifier(cell, WALEdit.BULK_LOAD)) {<a name="line.206"></a>
+<span class="sourceLineNo">207</span>            if (bulkLoadHFileMap == null) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>              bulkLoadHFileMap = new HashMap&lt;&gt;();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>            }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>            buildBulkLoadHFileMap(bulkLoadHFileMap, table, cell);<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          } else {<a name="line.211"></a>
+<span class="sourceLineNo">212</span>            // Handle wal replication<a name="line.212"></a>
+<span class="sourceLineNo">213</span>            if (isNewRowOrType(previousCell, cell)) {<a name="line.213"></a>
+<span class="sourceLineNo">214</span>              // Create new mutation<a name="line.214"></a>
+<span class="sourceLineNo">215</span>              mutation =<a name="line.215"></a>
+<span class="sourceLineNo">216</span>                  CellUtil.isDelete(cell) ? new Delete(cell.getRowArray(), cell.getRowOffset(),<a name="line.216"></a>
+<span class="sourceLineNo">217</span>                      cell.getRowLength()) : new Put(cell.getRowArray(), cell.getRowOffset(),<a name="line.217"></a>
+<span class="sourceLineNo">218</span>                      cell.getRowLength());<a name="line.218"></a>
+<span class="sourceLineNo">219</span>              List&lt;UUID&gt; clusterIds = new ArrayList&lt;&gt;(entry.getKey().getClusterIdsList().size());<a name="line.219"></a>
+<span class="sourceLineNo">220</span>              for (HBaseProtos.UUID clusterId : entry.getKey().getClusterIdsList()) {<a name="line.220"></a>
+<span class="sourceLineNo">221</span>                clusterIds.add(toUUID(clusterId));<a name="line.221"></a>
+<span class="sourceLineNo">222</span>              }<a name="line.222"></a>
+<span class="sourceLineNo">223</span>              mutation.setClusterIds(clusterIds);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>              addToHashMultiMap(rowMap, table, clusterIds, mutation);<a name="line.224"></a>
+<span class="sourceLineNo">225</span>            }<a name="line.225"></a>
+<span class="sourceLineNo">226</span>            if (CellUtil.isDelete(cell)) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>              ((Delete) mutation).add(cell);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>            } else {<a name="line.228"></a>
+<span class="sourceLineNo">229</span>              ((Put) mutation).add(cell);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>            }<a name="line.230"></a>
+<span class="sourceLineNo">231</span>            previousCell = cell;<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          }<a name="line.232"></a>
+<span class="sourceLineNo">233</span>        }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>        totalReplicated++;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      }<a name="line.235"></a>
+<span class="sourceLineNo">236</span><a name="line.236"></a>
+<span class="sourceLineNo">237</span>      // TODO Replicating mutations and bulk loaded data can be made parallel<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      if (!rowMap.isEmpty()) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        LOG.debug("Started replicating mutations.");<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        for (Entry&lt;TableName, Map&lt;List&lt;UUID&gt;, List&lt;Row&gt;&gt;&gt; entry : rowMap.entrySet()) {<a name="line.240"></a>
+<span class="sourceLineNo">241</span>          batch(entry.getKey(), entry.getValue().values());<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        }<a name="line.242"></a>
+<span class="sourceLineNo">243</span>        LOG.debug("Finished replicating mutations.");<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      }<a name="line.244"></a>
+<span class="sourceLineNo">245</span><a name="line.245"></a>
+<span class="sourceLineNo">246</span>      if (bulkLoadHFileMap != null &amp;&amp; !bulkLoadHFileMap.isEmpty()) {<a name="line.246"></a>
+<span class="sourceLineNo">247</span>        LOG.debug("Started replicating bulk loaded data.");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>        HFileReplicator hFileReplicator =<a name="line.248"></a>
+<span class="sourceLineNo">249</span>            new HFileReplicator(this.provider.getConf(this.conf, replicationClusterId),<a name="line.249"></a>
+<span class="sourceLineNo">250</span>                sourceBaseNamespaceDirPath, sourceHFileArchiveDirPath, bulkLoadHFileMap, conf,<a name="line.250"></a>
+<span class="sourceLineNo">251</span>                getConnection());<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        hFileReplicator.replicate();<a name="line.252"></a>
+<span class="sourceLineNo">253</span>        LOG.debug("Finished replicating bulk loaded data.");<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
+<span class="sourceLineNo">255</span><a name="line.255"></a>
+<span class="sourceLineNo">256</span>      int size = entries.size();<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      this.metrics.setAgeOfLastAppliedOp(entries.get(size - 1).getKey().getWriteTime());<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      this.metrics.applyBatch(size + hfilesReplicated, hfilesReplicated);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      this.totalReplicatedEdits.addAndGet(totalReplicated);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    } catch (IOException ex) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      LOG.error("Unable to accept edit because:", ex);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      throw ex;<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>  private void buildBulkLoadHFileMap(<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      final Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap, TableName table,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      Cell cell) throws IOException {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    BulkLoadDescriptor bld = WALEdit.getBulkLoadDescriptor(cell);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    List&lt;StoreDescriptor&gt; storesList = bld.getStoresList();<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    int storesSize = storesList.size();<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    for (int j = 0; j &lt; storesSize; j++) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      StoreDescriptor storeDescriptor = storesList.get(j);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      List&lt;String&gt; storeFileList = storeDescriptor.getStoreFileList();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      int storeFilesSize = storeFileList.size();<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      hfilesReplicated += storeFilesSize;<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      for (int k = 0; k &lt; storeFilesSize; k++) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        byte[] family = storeDescriptor.getFamilyName().toByteArray();<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>        // Build hfile relative path from its namespace<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        String pathToHfileFromNS = getHFilePath(table, bld, storeFileList.get(k), family);<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>        String tableName = table.getNameWithNamespaceInclAsString();<a name="line.283"></a>
+<span class="sourceLineNo">284</span>        if (bulkLoadHFileMap.containsKey(tableName)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; familyHFilePathsList = bulkLoadHFileMap.get(tableName);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>          boolean foundFamily = false;<a name="line.286"></a>
+<span class="sourceLineNo">287</span>          for (int i = 0; i &lt; familyHFilePathsList.size(); i++) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>            Pair&lt;byte[], List&lt;String&gt;&gt; familyHFilePathsPair = familyHFilePathsList.get(i);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>            if (Bytes.equals(familyHFilePathsPair.getFirst(), family)) {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>              // Found family already present, just add the path to the existing list<a name="line.290"></a>
+<span class="sourceLineNo">291</span>              familyHFilePathsPair.getSecond().add(pathToHfileFromNS);<a name="line.291"></a>
+<span class="sourceLineNo">292</span>              foundFamily = true;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>              break;<a name="line.293"></a>
+<span class="sourceLineNo">294</span>            }<a name="line.294"></a>
 <span class="sourceLineNo">295</span>          }<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        } else {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          // Add this table entry into the map<a name="line.297"></a>
-<span class="sourceLineNo">298</span>          addNewTableEntryInMap(bulkLoadHFileMap, family, pathToHfileFromNS, tableName);<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>    }<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>  private void addFamilyAndItsHFilePathToTableInMap(byte[] family, String pathToHfileFromNS,<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; familyHFilePathsList) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    List&lt;String&gt; hfilePaths = new ArrayList&lt;&gt;(1);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    hfilePaths.add(pathToHfileFromNS);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    familyHFilePathsList.add(new Pair&lt;&gt;(family, hfilePaths));<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  }<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private void addNewTableEntryInMap(<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      final Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap, byte[] family,<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      String pathToHfileFromNS, String tableName) {<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    List&lt;String&gt; hfilePaths = new ArrayList&lt;&gt;(1);<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    hfilePaths.add(pathToHfileFromNS);<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    Pair&lt;byte[], List&lt;String&gt;&gt; newFamilyHFilePathsPair = new Pair&lt;&gt;(family, hfilePaths);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; newFamilyHFilePathsList = new ArrayList&lt;&gt;();<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    newFamilyHFilePathsList.add(newFamilyHFilePathsPair);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    bulkLoadHFileMap.put(tableName, newFamilyHFilePathsList);<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>  private String getHFilePath(TableName table, BulkLoadDescriptor bld, String storeFile,<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      byte[] family) {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    return new StringBuilder(100).append(table.getNamespaceAsString()).append(Path.SEPARATOR)<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        .append(table.getQualifierAsString()).append(Path.SEPARATOR)<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        .append(Bytes.toString(bld.getEncodedRegionName().toByteArray())).append(Path.SEPARATOR)<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        .append(Bytes.toString(family)).append(Path.SEPARATOR).append(storeFile).toString();<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>  /**<a name="line.330"></a>
-<span class="sourceLineNo">331</span>   * @param previousCell<a name="line.331"></a>
-<span class="sourceLineNo">332</span>   * @param cell<a name="line.332"></a>
-<span class="sourceLineNo">333</span>   * @return True if we have crossed over onto a new row or type<a name="line.333"></a>
-<span class="sourceLineNo">334</span>   */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  private boolean isNewRowOrType(final Cell previousCell, final Cell cell) {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    return previousCell == null || previousCell.getTypeByte() != cell.getTypeByte() ||<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        !CellUtil.matchingRows(previousCell, cell);<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  }<a name="line.338"></a>
-<span class="sourceLineNo">339</span><a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private java.util.UUID toUUID(final HBaseProtos.UUID uuid) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    return new java.util.UUID(uuid.getMostSigBits(), uuid.getLeastSigBits());<a name="line.341"></a>
+<span class="sourceLineNo">296</span>          if (!foundFamily) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>            // Family not found, add this family and its hfile paths pair to the list<a name="line.297"></a>
+<span class="sourceLineNo">298</span>            addFamilyAndItsHFilePathToTableInMap(family, pathToHfileFromNS, familyHFilePathsList);<a name="line.298"></a>
+<span class="sourceLineNo">299</span>          }<a name="line.299"></a>
+<span class="sourceLineNo">300</span>        } else {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>          // Add this table entry into the map<a name="line.301"></a>
+<span class="sourceLineNo">302</span>          addNewTableEntryInMap(bulkLoadHFileMap, family, pathToHfileFromNS, tableName);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        }<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      }<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  }<a name="line.306"></a>
+<span class="sourceLineNo">307</span><a name="line.307"></a>
+<span class="sourceLineNo">308</span>  private void addFamilyAndItsHFilePathToTableInMap(byte[] family, String pathToHfileFromNS,<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; familyHFilePathsList) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    List&lt;String&gt; hfilePaths = new ArrayList&lt;&gt;(1);<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    hfilePaths.add(pathToHfileFromNS);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    familyHFilePathsList.add(new Pair&lt;&gt;(family, hfilePaths));<a name="line.312"></a>
+<span class="sourceLineNo">313</span>  }<a name="line.313"></a>
+<span class="sourceLineNo">314</span><a name="line.314"></a>
+<span class="sourceLineNo">315</span>  private void addNewTableEntryInMap(<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      final Map&lt;String, List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt;&gt; bulkLoadHFileMap, byte[] family,<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      String pathToHfileFromNS, String tableName) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>    List&lt;String&gt; hfilePaths = new ArrayList&lt;&gt;(1);<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    hfilePaths.add(pathToHfileFromNS);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    Pair&lt;byte[], List&lt;String&gt;&gt; newFamilyHFilePathsPair = new Pair&lt;&gt;(family, hfilePaths);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    List&lt;Pair&lt;byte[], List&lt;String&gt;&gt;&gt; newFamilyHFilePathsList = new ArrayList&lt;&gt;();<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    newFamilyHFilePathsList.add(newFamilyHFilePathsPair);<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    bulkLoadHFileMap.put(tableName, newFamilyHFilePathsList);<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>  private String getHFilePath(TableName table, BulkLoadDescriptor bld, String storeFile,<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      byte[] family) {<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    return new StringBuilder(100).append(table.getNamespaceAsString()).append(Path.SEPARATOR)<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        .append(table.getQualifierAsString()).append(Path.SEPARATOR)<a name="line.329"></a>
+<span class="sourceLineNo">330</span>        .append(Bytes.toString(bld.getEncodedRegionName().toByteArray())).append(Path.SEPARATOR)<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        .append(Bytes.toString(family)).append(Path.SEPARATOR).append(storeFile).toString();<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>   * @param previousCell<a name="line.335"></a>
+<span class="sourceLineNo">336</span>   * @param cell<a name="line.336"></a>
+<span class="sourceLineNo">337</span>   * @return True if we have crossed over onto a new row or type<a name="line.337"></a>
+<span class="sourceLineNo">338</span>   */<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  private boolean isNewRowOrType(final Cell previousCell, final Cell cell) {<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    return previousCell == null || previousCell.getTypeByte() != cell.getTypeByte() ||<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        !CellUtil.matchingRows(previousCell, cell);<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>   * Simple helper to a map from key to (a list of) values<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   * TODO: Make a general utility method<a name="line.346"></a>
-<span class="sourceLineNo">347</span>   * @param map<a name="line.347"></a>
-<span class="sourceLineNo">348</span>   * @param key1<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * @param key2<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * @param value<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * @return the list of values corresponding to key1 and key2<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   */<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  private &lt;K1, K2, V&gt; List&lt;V&gt; addToHashMultiMap(Map&lt;K1, Map&lt;K2,List&lt;V&gt;&gt;&gt; map, K1 key1, K2 key2, V value) {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    Map&lt;K2,List&lt;V&gt;&gt; innerMap = map.get(key1);<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (innerMap == null) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      innerMap = new HashMap&lt;&gt;();<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      map.put(key1, innerMap);<a name="line.357"></a>
-<span class="sourceLineNo">358</span>    }<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    List&lt;V&gt; values = innerMap.get(key2);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    if (values == null) {<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      values = new ArrayList&lt;&gt;();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      innerMap.put(key2, values);<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    }<a name="line.363"></a>
-<span class="sourceLineNo">364</span>    values.add(value);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    return values;<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>   * stop the thread pool executor. It is called when the regionserver is stopped.<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  public void stopReplicationSinkServices() {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    try {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      if (this.sharedHtableCon != null) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>        synchronized (sharedHtableConLock) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>          if (this.sharedHtableCon != null) {<a name="line.375"></a>
-<span class="sourceLineNo">376</span>            this.sharedHtableCon.close();<a name="line.376"></a>
-<span class="sourceLineNo">377</span>            this.sharedHtableCon = null;<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>    } catch (IOException e) {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      LOG.warn("IOException while closing the connection", e); // ignoring as we are closing.<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    }<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  }<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  /**<a name="line.387"></a>
-<span class="sourceLineNo">388</span>   * Do the changes and handle the pool<a name="line.388"></a>
-<span class="sourceLineNo">389</span>   * @param tableName table to insert into<a name="line.389"></a>
-<span class="sourceLineNo">390</span>   * @param allRows list of actions<a name="line.390"></a>
-<span class="sourceLineNo">391</span>   * @throws IOException<a name="line.391"></a>
-<span class="sourceLineNo">392</span>   */<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected void batch(TableName tableName, Collection&lt;List&lt;Row&gt;&gt; allRows) throws IOException {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    if (allRows.isEmpty()) {<a name="line.394"></a>
-<span class="sourceLineNo">395</span>      return;<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    Table table = null;<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    try {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      Connection connection = getConnection();<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      table = connection.getTable(tableName);<a name="line.400"></a>
-<span class="sourceLineNo">401</span>      for (List&lt;Row&gt; rows : allRows) {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        table.batch(rows, null);<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      }<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    } catch (RetriesExhaustedWithDetailsException rewde) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      for (Throwable ex : rewde.getCauses()) {<a name="line.405"></a>
-<span class="sourceLineNo">406</span>        if (ex instanceof TableNotFoundException) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>          throw new TableNotFoundException("'" + tableName + "'");<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        }<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      throw rewde;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>    } catch (InterruptedException ix) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(ix);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    } finally {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      if (table != null) {<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        table.close();<a name="line.415"></a>
-<span class="sourceLineNo">416</span>      }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>    }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  }<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private Connection getConnection() throws IOException {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // See https://en.wikipedia.org/wiki/Double-checked_locking<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    Connection connection = sharedHtableCon;<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    if (connection == null) {<a name="line.423"></a>
-<span class="sourceLineNo">424</span>      synchronized (sharedHtableConLock) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        connection = sharedHtableCon;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>        if (connection == null) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>          connection = sharedHtableCon = ConnectionFactory.createConnection(conf);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        }<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      }<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    }<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    return connection;<a name="line.431"></a>
-<span class="sourceLineNo">432</span>  }<a name="line.432"></a>
-<span class="sourceLineNo">433</span><a name="line.433"></a>
-<span class="sourceLineNo">434</span>  /**<a name="line.434"></a>
-<span class="sourceLineNo">435</span>   * Get a string representation of this sink's metrics<a name="line.435"></a>
-<span class="sourceLineNo">436</span>   * @return string with the total replicated edits count and the date<a name="line.436"></a>
-<span class="sourceLineNo">437</span>   * of the last edit that was applied<a name="line.437"></a>
-<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public String getStats() {<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    return this.totalReplicatedEdits.get() == 0 ? "" : "Sink: " +<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      "age in ms of last applied edit: " + this.metrics.refreshAgeOfLastAppliedOp() +<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      ", total replicated edits: " + this.totalReplicatedEdits;<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  }<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  /**<a name="line.445"></a>
-<span class="sourceLineNo">446</span>   * Get replication Sink Metrics<a name="line.446"></a>
-<span class="sourceLineNo">447</span>   * @return MetricsSink<a name="line.447"></a>
-<span class="sourceLineNo">448</span>   */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  public MetricsSink getSinkMetrics() {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    return this.metrics;<a name="line.450"></a>
-<span class="sourceLineNo">451</span>  }<a name="line.451"></a>
-<span class="sourceLineNo">452</span>}<a name="line.452"></a>
+<span class="sourceLineNo">344</span>  private java.util.UUID toUUID(final HBaseProtos.UUID uuid) {<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return new java.util.UUID(uuid.getMostSigBits(), uuid.getLeastSigBits());<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>   * Simple helper to a map from key to (a list of) values<a name="line.349"></a>
+<span class="sourceLineNo">350</span>   * TODO: Make a general utility method<a name="line.350"></a>
+<span class="sourceLineNo">351</span>   * @param map<a name="line.351"></a>
+<span class="sourceLineNo">352</span>   * @param key1<a name="line.352"></a>
+<span class="sourceLineNo">353</span>   * @param key2<a name="line.353"></a>
+<span class="sourceLineNo">354</span>   * @param value<a name="line.354"></a>
+<span class="sourceLineNo">355</span>   * @return the list of values corresponding to key1 and key2<a name="line.355"></a>
+<span class="sourceLineNo">356</span>   */<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  private &lt;K1, K2, V&gt; List&lt;V&gt; addToHashMultiMap(Map&lt;K1, Map&lt;K2,List&lt;V&gt;&gt;&gt; map, K1 key1, K2 key2, V value) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    Map&lt;K2,List&lt;V&gt;&gt; innerMap = map.get(key1);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    if (innerMap == null) {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      innerMap = new HashMap&lt;&gt;();<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      map.put(key1, innerMap);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    List&lt;V&gt; values = innerMap.get(key2);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    if (values == null) {<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      values = new ArrayList&lt;&gt;();<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      innerMap.put(key2, values);<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    }<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    values.add(value);<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    return values;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /**<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * stop the thread pool executor. It is called when the regionserver is stopped.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  public void stopReplicationSinkServices() {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    try {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (this.sharedHtableCon != null) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        synchronized (sharedHtableConLock) {<a name="line.378"></a>
+<span class="sourceLineNo">379</span>          if (this.sharedHtableCon != null) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>            this.sharedHtableCon.close();<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            this.sharedHtableCon = null;<a name="line.381"></a>
+<span class="sourceLineNo">382</span>          }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        }<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      }<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    } catch (IOException e) {<a name="line.385"></a>
+<span class="sourceLineNo">386</span>      LOG.warn("IOException while closing the connection", e); // ignoring as we are closing.<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span><a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  /**<a name="line.391"></a>
+<span class="sourceLineNo">392</span>   * Do the changes and handle the pool<a name="line.392"></a>
+<span class="sourceLineNo">393</span>   * @param tableName table to insert into<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * @param allRows list of actions<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @throws IOException<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   */<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  protected void batch(TableName tableName, Collection&lt;List&lt;Row&gt;&gt; allRows) throws IOException {<a name="line.397"></a>
+<span class="sourceLineNo">398</span>    if (allRows.isEmpty()) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      return;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>    Table table = null;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>    try {<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      Connection connection = getConnection();<a name="line.403"></a>
+<span class="sourceLineNo">404</span>      table = connection.getTable(tableName);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      for (List&lt;Row&gt; rows : allRows) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        table.batch(rows, null);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>    } catch (RetriesExhaustedWithDetailsException rewde) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      for (Throwable ex : rewde.getCauses()) {<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        if (ex instanceof TableNotFoundException) {<a name="line.410"></a>
+<span class="sourceLineNo">411</span>          throw new TableNotFoundException("'" + tableName + "'");<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>      }<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      throw rewde;<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    } catch (InterruptedException ix) {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      throw (InterruptedIOException) new InterruptedIOException().initCause(ix);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    } finally {<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      if (table != null) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>        table.close();<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      }<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    }<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  }<a name="line.422"></a>
+<span class="sourceLineNo">423</span><a name="line.423"></a>
+<span class="sourceLineNo">424</span>  private Connection getConnection() throws IOException {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    // See https://en.wikipedia.org/wiki/Double-checked_locking<a name="line.425"></a>
+<span class="sourceLineNo">426</span>    Connection connection = sharedHtableCon;<a name="line.426"></a>
+<span class="sourceLineNo">427</span>    if (connection == null) {<a name="line.427"></a>
+<span class="sourceLineNo">428</span>      synchronized (sharedHtableConLock) {<a name="line.428"></a>
+<span class="sourceLineNo">429</span>        connection = sharedHtableCon;<a name="line.429"></a>
+<span class="sourceLineNo">430</span>        if (connection == null) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          connection = sharedHtableCon = ConnectionFactory.createConnection(conf);<a name="line.431"></a>
+<span class="sourceLineNo">432</span>        }<a name="line.432"></a>
+<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
+<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
+<span class="sourceLineNo">435</span>    return connection;<a name="line.435"></a>
+<span class="sourceLineNo">436</span>  }<a name="line.436"></a>
+<span class="sourceLineNo">437</span><a name="line.437"></a>
+<span class="sourceLineNo">438</span>  /**<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * Get a string representation of this sink's metrics<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * @return string with the total replicated edits count and the date<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   * of the last edit that was applied<a name="line.441"></a>
+<span class="sourceLineNo">442</span>   */<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public String getStats() {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    return this.totalReplicatedEdits.get() == 0 ? "" : "Sink: " +<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      "age in ms of last applied edit: " + this.metrics.refreshAgeOfLastAppliedOp() +<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      ", total replicated edits: " + this.totalReplicatedEdits;<a name="line.446"></a>
+<span class="sourceLineNo">447</span>  }<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>  /**<a name="line.449"></a>
+<span class="sourceLineNo">450</span>   * Get replication Sink Metrics<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * @return MetricsSink<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
+<span class="sourceLineNo">453</span>  public MetricsSink getSinkMetrics() {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    return this.metrics;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index bef3b8b..2f28172 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -246,7 +246,7 @@
 <span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
 <span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
 <span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
-<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
+<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
 <span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
 <span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
 <span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
index 32a8ed1..7aeb6fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
@@ -333,3464 +333,3478 @@
 <span class="sourceLineNo">325</span><a name="line.325"></a>
 <span class="sourceLineNo">326</span>  volatile boolean killed = false;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected final Configuration conf;<a name="line.328"></a>
+<span class="sourceLineNo">328</span>  private volatile boolean shutDown = false;<a name="line.328"></a>
 <span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private Path rootDir;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private Path walRootDir;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.333"></a>
+<span class="sourceLineNo">330</span>  protected final Configuration conf;<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Path rootDir;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private Path walRootDir;<a name="line.333"></a>
 <span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  final int numRetries;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  protected final int threadWakeFrequency;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected final int msgInterval;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  protected final int numRegionsToReport;<a name="line.339"></a>
+<span class="sourceLineNo">335</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  final int numRetries;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected final int threadWakeFrequency;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  protected final int msgInterval;<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  // Stub to do region server status calls against the master.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  RpcClient rpcClient;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.350"></a>
+<span class="sourceLineNo">341</span>  protected final int numRegionsToReport;<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // Stub to do region server status calls against the master.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  RpcClient rpcClient;<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // into web context.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  protected InfoServer infoServer;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private JvmPauseMonitor pauseMonitor;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** region server process name */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public static final String REGIONSERVER = "regionserver";<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  MetricsRegionServer metricsRegionServer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  MetricsTable metricsTable;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private SpanReceiverHost spanReceiverHost;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ChoreService choreService;<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>   * Check for compactions requests.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  ScheduledChore compactionChecker;<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Check for flushes<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  ScheduledChore periodicFlusher;<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  protected volatile WALFactory walFactory;<a name="line.380"></a>
+<span class="sourceLineNo">352</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  // into web context.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  protected InfoServer infoServer;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private JvmPauseMonitor pauseMonitor;<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /** region server process name */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public static final String REGIONSERVER = "regionserver";<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  MetricsRegionServer metricsRegionServer;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  MetricsTable metricsTable;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private SpanReceiverHost spanReceiverHost;<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>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ChoreService choreService;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Check for compactions requests.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  ScheduledChore compactionChecker;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /*<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Check for flushes<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  ScheduledChore periodicFlusher;<a name="line.380"></a>
 <span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  // WAL roller. log is protected rather than private to avoid<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // eclipse warning when accessed by inner classes<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  protected LogRoller walRoller;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // A thread which calls reportProcedureDone<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  // flag set after we're done setting up server threads<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // zookeeper connection and watcher<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected final ZKWatcher zooKeeper;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // master address tracker<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // Cluster Status Tracker<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  // Log Splitting Worker<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private SplitLogWorker splitLogWorker;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // A sleeper that sleeps for msgInterval.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  protected final Sleeper sleeper;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final int operationTimeout;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private final int shortOperationTimeout;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.410"></a>
+<span class="sourceLineNo">382</span>  protected volatile WALFactory walFactory;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // WAL roller. log is protected rather than private to avoid<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  // eclipse warning when accessed by inner classes<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  protected LogRoller walRoller;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  // A thread which calls reportProcedureDone<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  // flag set after we're done setting up server threads<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  // zookeeper connection and watcher<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected final ZKWatcher zooKeeper;<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // master address tracker<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  // Cluster Status Tracker<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  // Log Splitting Worker<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private SplitLogWorker splitLogWorker;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // A sleeper that sleeps for msgInterval.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected final Sleeper sleeper;<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private final int operationTimeout;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final int shortOperationTimeout;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // Cache configuration and block cache reference<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  protected CacheConfig cacheConfig;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // Cache configuration for mob<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  final MobCacheConfig mobCacheConfig;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /** The health check chore. */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private HealthCheckChore healthCheckChore;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /** The nonce manager chore. */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private ScheduledChore nonceManagerChore;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.423"></a>
+<span class="sourceLineNo">412</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  // Cache configuration and block cache reference<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  protected CacheConfig cacheConfig;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  // Cache configuration for mob<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  final MobCacheConfig mobCacheConfig;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  /** The health check chore. */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private HealthCheckChore healthCheckChore;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  /** The nonce manager chore. */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ScheduledChore nonceManagerChore;<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>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * against  Master.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  protected ServerName serverName;<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /*<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * hostname specified by hostname config<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected String useThisHostnameInstead;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  // key to the config parameter of server hostname<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  // both master and region server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.441"></a>
+<span class="sourceLineNo">425</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * against  Master.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  protected ServerName serverName;<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /*<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * hostname specified by hostname config<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  protected String useThisHostnameInstead;<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  // key to the config parameter of server hostname<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  // both master and region server<a name="line.441"></a>
 <span class="sourceLineNo">442</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  // Exception will be thrown if both are used.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * This servers startcode.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  protected final long startcode;<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>   * Unique identifier for the cluster we are a part of.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  protected String clusterId;<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * MX Bean for RegionServerInfo<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private ObjectName mxBean = null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * Chore to clean periodically the moved region list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  // chore for refreshing store files for secondary regions<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  private StorefileRefresherChore storefileRefresher;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  private RegionServerCoprocessorHost rsHost;<a name="line.473"></a>
+<span class="sourceLineNo">443</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  // Exception will be thrown if both are used.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * This servers startcode.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  protected final long startcode;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Unique identifier for the cluster we are a part of.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected String clusterId;<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * MX Bean for RegionServerInfo<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private ObjectName mxBean = null;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Chore to clean periodically the moved region list<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  // chore for refreshing store files for secondary regions<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  private StorefileRefresherChore storefileRefresher;<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.475"></a>
+<span class="sourceLineNo">475</span>  private RegionServerCoprocessorHost rsHost;<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<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>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * HBASE-3787) are:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  final ServerNonceManager nonceManager;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private UserProvider userProvider;<a name="line.500"></a>
+<span class="sourceLineNo">477</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * HBASE-3787) are:<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  final ServerNonceManager nonceManager;<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected final RSRpcServices rpcServices;<a name="line.502"></a>
+<span class="sourceLineNo">502</span>  private UserProvider userProvider;<a name="line.502"></a>
 <span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  protected CoordinatedStateManager csm;<a name="line.504"></a>
+<span class="sourceLineNo">504</span>  protected final RSRpcServices rpcServices;<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  protected final ConfigurationManager configurationManager;<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @VisibleForTesting<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  private volatile ThroughputController flushThroughputController;<a name="line.515"></a>
+<span class="sourceLineNo">506</span>  protected CoordinatedStateManager csm;<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>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected final ConfigurationManager configurationManager;<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.517"></a>
+<span class="sourceLineNo">517</span>  private volatile ThroughputController flushThroughputController;<a name="line.517"></a>
 <span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  protected FileSystemUtilizationChore fsUtilizationChore;<a name="line.519"></a>
+<span class="sourceLineNo">519</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.519"></a>
 <span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<a name="line.521"></a>
+<span class="sourceLineNo">521</span>  protected FileSystemUtilizationChore fsUtilizationChore;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  private final boolean masterless;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * Starts a HRegionServer at the default location<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  // Don't start any services or managers in here in the Constructor.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    super("RegionServer");  // thread name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TraceUtil.initTracer(conf);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      this.startcode = System.currentTimeMillis();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.conf = conf;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.fsOk = true;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      HFile.checkHFileVersion(this.conf);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      checkCodecs(this.conf);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      decorateRegionServerConfiguration(this.conf);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Disable usage of meta replicas in the regionserver<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Config'ed params<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.561"></a>
+<span class="sourceLineNo">523</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  private final boolean masterless;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<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>   * Starts a HRegionServer at the default location<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  // Don't start any services or managers in here in the Constructor.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    super("RegionServer");  // thread name<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    TraceUtil.initTracer(conf);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      this.startcode = System.currentTimeMillis();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      this.conf = conf;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      this.fsOk = true;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      HFile.checkHFileVersion(this.conf);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      checkCodecs(this.conf);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      decorateRegionServerConfiguration(this.conf);<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // Disable usage of meta replicas in the regionserver<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      // Config'ed params<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.561"></a>
 <span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.566"></a>
+<span class="sourceLineNo">563</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>      this.abortRequested = false;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      this.stopped = false;<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>      rpcServices = createRpcServices();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      String hostName =<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              : this.useThisHostnameInstead;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>      // login the zookeeper client principal (if using security)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      // login the server principal (if using secure Hadoop)<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      login(userProvider, hostName);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      // init superusers and add the server principal (if using security)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      // or process owner as default super user.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      Superusers.initialize(conf);<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      cacheConfig = new CacheConfig(conf);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        }<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>      initializeFileSystem();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>      this.configurationManager = new ConfigurationManager();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        // Open connection to zookeeper and set primary watcher<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        if (!this.masterless) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>          masterAddressTracker.start();<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          clusterStatusTracker.start();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          masterAddressTracker = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          clusterStatusTracker = null;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        zooKeeper = null;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        masterAddressTracker = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        clusterStatusTracker = null;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      this.rpcServices.start(zooKeeper);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // class HRS. TODO.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      this.choreService = new ChoreService(getName(), true);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      this.executorService = new ExecutorService(getName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      putUpWebUI();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } catch (Throwable t) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // cause of failed startup is lost.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      LOG.error("Failed construction RegionServer", t);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw t;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  // HMaster should override this method to load the specific config for master<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        throw new IOException(msg);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        return rpcServices.isa.getHostName();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return hostname;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  /**<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * If running on Windows, do windows-specific setup.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        public void handle(Signal signal) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          conf.reloadConfiguration();<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          cm.notifyAllObservers(conf);<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>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    NettyEventLoopGroupConfig nelgc =<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      new NettyEventLoopGroupConfig(conf, "RS-EventLoopGroup");<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    NettyRpcClientConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    NettyAsyncFSWALConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    return nelgc;<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>  private void initializeFileSystem() throws IOException {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    // Get fs instance used by this RS.  Do we use checksum verification in the hbase? If hbase<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    // checksum verification enabled, then automatically switch off hdfs checksum verification.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    FSUtils.setFsDefault(this.conf, FSUtils.getWALRootDir(this.conf));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    this.walFs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this.walRootDir = FSUtils.getWALRootDir(this.conf);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    // Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // underlying hadoop hdfs accessors will be going against wrong filesystem<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    // (unless all is set to defaults).<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    this.fs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    this.rootDir = FSUtils.getRootDir(this.conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    this.tableDescriptors = getFsTableDescriptors();<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>  protected TableDescriptors getFsTableDescriptors() throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return new FSTableDescriptors(this.conf,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.fs, this.rootDir, !canUpdateTableDescriptor(), false, getMetaTableObserver());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return null;<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    user.login("hbase.regionserver.keytab.file",<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      "hbase.regionserver.kerberos.principal", host);<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>  protected void waitForMasterActive() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>  protected String getProcessName() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return REGIONSERVER;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  protected boolean canCreateBaseZNode() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.masterless;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  protected boolean canUpdateTableDescriptor() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    return false;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return new RSRpcServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  protected void configureInfoServer() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return RSDumpServlet.class;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    /*<a name="line.753"></a>
-<span class="sourceLineNo">754</span>     * No stacking of instances is allowed for a single executorService name<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.756"></a>
-<span class="sourceLineNo">757</span>        instance.getDescriptorForType();<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.760"></a>
-<span class="sourceLineNo">761</span>          + " already registered, rejecting request from " + instance);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return false;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    if (LOG.isDebugEnabled()) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return true;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * @throws IOException<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  @VisibleForTesting<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // and remote invocations.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      serverName, rpcServices, rpcServices);<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>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @param c<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @throws IOException<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    // check to see if the codec list is available:<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    if (codecs == null) return;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    for (String codec : codecs) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        throw new IOException("Compression codec " + codec +<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          " not supported, aborting RS construction");<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><a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public String getClusterId() {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    return this.clusterId;<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>   * Setup our cluster connection if not already initialized.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @throws IOException<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (clusterConnection == null) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      clusterConnection = createClusterConnection();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      metaTableLocator = new MetaTableLocator();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   */<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  private void preRegistrationInitialization() {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    try {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      initializeZooKeeper();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      setupClusterConnection();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      // Setup RPC client for master communication<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    } catch (Throwable t) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      // Call stop if error or process will stick around for ever since server<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // puts up non-daemon threads.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      this.rpcServices.stop();<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * &lt;p&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * Finally open long-living server short-circuit connection.<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    justification="cluster Id znode read would give us correct response")<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // Nothing to do in here if no Master in the mix.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (this.masterless) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // block until a master is available.  No point in starting up if no master<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // running.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // when ready.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.860"></a>
+<span class="sourceLineNo">568</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      this.abortRequested = false;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      this.stopped = false;<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      rpcServices = createRpcServices();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      String hostName =<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              : this.useThisHostnameInstead;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // login the zookeeper client principal (if using security)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      // login the server principal (if using secure Hadoop)<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      login(userProvider, hostName);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      // init superusers and add the server principal (if using security)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      // or process owner as default super user.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Superusers.initialize(conf);<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      cacheConfig = new CacheConfig(conf);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>        @Override<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      };<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>      initializeFileSystem();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this.configurationManager = new ConfigurationManager();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Open connection to zookeeper and set primary watcher<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        if (!this.masterless) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          masterAddressTracker.start();<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          clusterStatusTracker.start();<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          masterAddressTracker = null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          clusterStatusTracker = null;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        zooKeeper = null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        masterAddressTracker = null;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        clusterStatusTracker = null;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.rpcServices.start(zooKeeper);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      // class HRS. TODO.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      this.choreService = new ChoreService(getName(), true);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      this.executorService = new ExecutorService(getName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      putUpWebUI();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    } catch (Throwable t) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      // cause of failed startup is lost.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      LOG.error("Failed construction RegionServer", t);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      throw t;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  // HMaster should override this method to load the specific config for master<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.659"></a>
+<span class="sourceLineNo">660</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        throw new IOException(msg);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        return rpcServices.isa.getHostName();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      }<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    } else {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      return hostname;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * If running on Windows, do windows-specific setup.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        public void handle(Signal signal) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          conf.reloadConfiguration();<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          cm.notifyAllObservers(conf);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      });<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    }<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>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    NettyEventLoopGroupConfig nelgc =<a name="line.688"></a

<TRUNCATED>

[18/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
new file mode 100644
index 0000000..3e25d25
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
@@ -0,0 +1,313 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.zksyncer;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collection;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.HashMap;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Map;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.concurrent.ArrayBlockingQueue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.BlockingQueue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HConstants;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Server;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.CreateMode;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * changed<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;p/&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * The target znode(s) is given through {@link #getNodesToWatch()} method<a name="line.44"></a>
+<span class="sourceLineNo">045</span> */<a name="line.45"></a>
+<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
+<span class="sourceLineNo">047</span>public abstract class ClientZKSyncer extends ZKListener {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static final Log LOG = LogFactory.getLog(ClientZKSyncer.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final Server server;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final ZKWatcher clientZkWatcher;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  // We use queues and daemon threads to synchronize the data to client ZK cluster<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  // to avoid blocking the single event thread for watchers<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private final Map&lt;String, BlockingQueue&lt;byte[]&gt;&gt; queues;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public ClientZKSyncer(ZKWatcher watcher, ZKWatcher clientZkWatcher, Server server) {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    super(watcher);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    this.server = server;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this.clientZkWatcher = clientZkWatcher;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.queues = new HashMap&lt;&gt;();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * Starts the syncer<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @throws KeeperException if error occurs when trying to create base nodes on client ZK<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public void start() throws KeeperException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    LOG.debug("Starting " + getClass().getSimpleName());<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.watcher.registerListener(this);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // create base znode on remote ZK<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    ZKUtil.createWithParents(clientZkWatcher, watcher.znodePaths.baseZNode);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // set meta znodes for client ZK<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    Collection&lt;String&gt; nodes = getNodesToWatch();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    LOG.debug("Znodes to watch: " + nodes);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // initialize queues and threads<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    for (String node : nodes) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      BlockingQueue&lt;byte[]&gt; queue = new ArrayBlockingQueue&lt;&gt;(1);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      queues.put(node, queue);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      Thread updater = new ClientZkUpdater(node, queue);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      updater.setDaemon(true);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      updater.start();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      watchAndCheckExists(node);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private void watchAndCheckExists(String node) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      if (ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        byte[] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        if (data != null) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          // put the data into queue<a name="line.90"></a>
+<span class="sourceLineNo">091</span>          upsertQueue(node, data);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        } else {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>          // It existed but now does not, should has been tracked by our watcher, ignore<a name="line.93"></a>
+<span class="sourceLineNo">094</span>          LOG.debug("Found no data from " + node);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          watchAndCheckExists(node);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        }<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      } else {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        // cleanup stale ZNodes on client ZK to avoid invalid requests to server<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        ZKUtil.deleteNodeFailSilent(clientZkWatcher, node);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    } catch (KeeperException e) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      server.abort("Unexpected exception during initialization, aborting", e);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  /**<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * Update the value of the single element in queue if any, or else insert.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * &lt;p/&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * We only need to synchronize the latest znode value to client ZK rather than synchronize each<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * time<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @param data the data to write to queue<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private void upsertQueue(String node, byte[] data) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    BlockingQueue&lt;byte[]&gt; queue = queues.get(node);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    synchronized (queue) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      queue.poll();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      queue.offer(data);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Set data for client ZK and retry until succeed. Be very careful to prevent dead loop when<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * modifying this method<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @param node the znode to set on client ZK<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param data the data to set to client ZK<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @throws InterruptedException if the thread is interrupted during process<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private final void setDataForClientZkUntilSuccess(String node, byte[] data)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws InterruptedException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    while (!server.isStopped()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      try {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        LOG.debug("Set data for remote " + node + ", client zk wather: " + clientZkWatcher);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        ZKUtil.setData(clientZkWatcher, node, data);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        break;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      } catch (KeeperException.NoNodeException nne) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        // Node doesn't exist, create it and set value<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        try {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          ZKUtil.createNodeIfNotExistsNoWatch(clientZkWatcher, node, data, CreateMode.PERSISTENT);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>          break;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        } catch (KeeperException.ConnectionLossException<a name="line.140"></a>
+<span class="sourceLineNo">141</span>            | KeeperException.SessionExpiredException ee) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          reconnectAfterExpiration();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        } catch (KeeperException e) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          LOG.warn(<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            "Failed to create znode " + node + " due to: " + e.getMessage() + ", will retry later");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      } catch (KeeperException.ConnectionLossException<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          | KeeperException.SessionExpiredException ee) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        reconnectAfterExpiration();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      } catch (KeeperException e) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.debug("Failed to set data to client ZK, will retry later", e);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      Threads.sleep(HConstants.SOCKET_RETRY_WAIT_MS);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private final void reconnectAfterExpiration() throws InterruptedException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    LOG.warn("ZK session expired or lost. Retry a new connection...");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      clientZkWatcher.reconnectAfterExpiration();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    } catch (IOException | KeeperException e) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      LOG.warn("Failed to reconnect to client zk after session expiration, will retry later", e);<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>  @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public void nodeCreated(String path) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (!validate(path)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      byte[] data = ZKUtil.getDataAndWatch(watcher, path);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      upsertQueue(path, data);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (KeeperException e) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      LOG.warn("Unexpected exception handling nodeCreated event", e);<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><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public void nodeDataChanged(String path) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (validate(path)) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      nodeCreated(path);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public synchronized void nodeDeleted(String path) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (validate(path)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      try {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        if (ZKUtil.watchAndCheckExists(watcher, path)) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>          nodeCreated(path);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      } catch (KeeperException e) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        LOG.warn("Unexpected exception handling nodeDeleted event for path: " + path, e);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * Validate whether a znode path is watched by us<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param path the path to validate<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @return true if the znode is watched by us<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract boolean validate(String path);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return the znode(s) to watch<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  abstract Collection&lt;String&gt; getNodesToWatch();<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>   * Thread to synchronize znode data to client ZK cluster<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  class ClientZkUpdater extends Thread {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    final String znode;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    final BlockingQueue&lt;byte[]&gt; queue;<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public ClientZkUpdater(String znode, BlockingQueue&lt;byte[]&gt; queue) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      this.znode = znode;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      this.queue = queue;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      setName("ClientZKUpdater-" + znode);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public void run() {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      while (!server.isStopped()) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        try {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>          byte[] data = queue.take();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          setDataForClientZkUntilSuccess(znode, data);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        } catch (InterruptedException e) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          if (LOG.isDebugEnabled()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            LOG.debug(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "Interrupted while checking whether need to update meta location to client zk");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Thread.currentThread().interrupt();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          break;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>}<a name="line.241"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
new file mode 100644
index 0000000..3e25d25
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
@@ -0,0 +1,313 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.zksyncer;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.io.IOException;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collection;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import java.util.HashMap;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import java.util.Map;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import java.util.concurrent.ArrayBlockingQueue;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import java.util.concurrent.BlockingQueue;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.commons.logging.Log;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.commons.logging.LogFactory;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.HConstants;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.Server;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.zookeeper.ZKListener;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.apache.zookeeper.CreateMode;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.zookeeper.KeeperException;<a name="line.38"></a>
+<span class="sourceLineNo">039</span><a name="line.39"></a>
+<span class="sourceLineNo">040</span>/**<a name="line.40"></a>
+<span class="sourceLineNo">041</span> * Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if<a name="line.41"></a>
+<span class="sourceLineNo">042</span> * changed<a name="line.42"></a>
+<span class="sourceLineNo">043</span> * &lt;p/&gt;<a name="line.43"></a>
+<span class="sourceLineNo">044</span> * The target znode(s) is given through {@link #getNodesToWatch()} method<a name="line.44"></a>
+<span class="sourceLineNo">045</span> */<a name="line.45"></a>
+<span class="sourceLineNo">046</span>@InterfaceAudience.Private<a name="line.46"></a>
+<span class="sourceLineNo">047</span>public abstract class ClientZKSyncer extends ZKListener {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static final Log LOG = LogFactory.getLog(ClientZKSyncer.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private final Server server;<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private final ZKWatcher clientZkWatcher;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  // We use queues and daemon threads to synchronize the data to client ZK cluster<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  // to avoid blocking the single event thread for watchers<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  private final Map&lt;String, BlockingQueue&lt;byte[]&gt;&gt; queues;<a name="line.53"></a>
+<span class="sourceLineNo">054</span><a name="line.54"></a>
+<span class="sourceLineNo">055</span>  public ClientZKSyncer(ZKWatcher watcher, ZKWatcher clientZkWatcher, Server server) {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    super(watcher);<a name="line.56"></a>
+<span class="sourceLineNo">057</span>    this.server = server;<a name="line.57"></a>
+<span class="sourceLineNo">058</span>    this.clientZkWatcher = clientZkWatcher;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    this.queues = new HashMap&lt;&gt;();<a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span><a name="line.61"></a>
+<span class="sourceLineNo">062</span>  /**<a name="line.62"></a>
+<span class="sourceLineNo">063</span>   * Starts the syncer<a name="line.63"></a>
+<span class="sourceLineNo">064</span>   * @throws KeeperException if error occurs when trying to create base nodes on client ZK<a name="line.64"></a>
+<span class="sourceLineNo">065</span>   */<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public void start() throws KeeperException {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    LOG.debug("Starting " + getClass().getSimpleName());<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    this.watcher.registerListener(this);<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    // create base znode on remote ZK<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    ZKUtil.createWithParents(clientZkWatcher, watcher.znodePaths.baseZNode);<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    // set meta znodes for client ZK<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    Collection&lt;String&gt; nodes = getNodesToWatch();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    LOG.debug("Znodes to watch: " + nodes);<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    // initialize queues and threads<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    for (String node : nodes) {<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      BlockingQueue&lt;byte[]&gt; queue = new ArrayBlockingQueue&lt;&gt;(1);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      queues.put(node, queue);<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      Thread updater = new ClientZkUpdater(node, queue);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      updater.setDaemon(true);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      updater.start();<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      watchAndCheckExists(node);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    }<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  }<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  private void watchAndCheckExists(String node) {<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    try {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      if (ZKUtil.watchAndCheckExists(watcher, node)) {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>        byte[] data = ZKUtil.getDataAndWatch(watcher, node);<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        if (data != null) {<a name="line.89"></a>
+<span class="sourceLineNo">090</span>          // put the data into queue<a name="line.90"></a>
+<span class="sourceLineNo">091</span>          upsertQueue(node, data);<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        } else {<a name="line.92"></a>
+<span class="sourceLineNo">093</span>          // It existed but now does not, should has been tracked by our watcher, ignore<a name="line.93"></a>
+<span class="sourceLineNo">094</span>          LOG.debug("Found no data from " + node);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>          watchAndCheckExists(node);<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        }<a name="line.96"></a>
+<span class="sourceLineNo">097</span>      } else {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>        // cleanup stale ZNodes on client ZK to avoid invalid requests to server<a name="line.98"></a>
+<span class="sourceLineNo">099</span>        ZKUtil.deleteNodeFailSilent(clientZkWatcher, node);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      }<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    } catch (KeeperException e) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      server.abort("Unexpected exception during initialization, aborting", e);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>  /**<a name="line.106"></a>
+<span class="sourceLineNo">107</span>   * Update the value of the single element in queue if any, or else insert.<a name="line.107"></a>
+<span class="sourceLineNo">108</span>   * &lt;p/&gt;<a name="line.108"></a>
+<span class="sourceLineNo">109</span>   * We only need to synchronize the latest znode value to client ZK rather than synchronize each<a name="line.109"></a>
+<span class="sourceLineNo">110</span>   * time<a name="line.110"></a>
+<span class="sourceLineNo">111</span>   * @param data the data to write to queue<a name="line.111"></a>
+<span class="sourceLineNo">112</span>   */<a name="line.112"></a>
+<span class="sourceLineNo">113</span>  private void upsertQueue(String node, byte[] data) {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    BlockingQueue&lt;byte[]&gt; queue = queues.get(node);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    synchronized (queue) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      queue.poll();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      queue.offer(data);<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>  }<a name="line.119"></a>
+<span class="sourceLineNo">120</span><a name="line.120"></a>
+<span class="sourceLineNo">121</span>  /**<a name="line.121"></a>
+<span class="sourceLineNo">122</span>   * Set data for client ZK and retry until succeed. Be very careful to prevent dead loop when<a name="line.122"></a>
+<span class="sourceLineNo">123</span>   * modifying this method<a name="line.123"></a>
+<span class="sourceLineNo">124</span>   * @param node the znode to set on client ZK<a name="line.124"></a>
+<span class="sourceLineNo">125</span>   * @param data the data to set to client ZK<a name="line.125"></a>
+<span class="sourceLineNo">126</span>   * @throws InterruptedException if the thread is interrupted during process<a name="line.126"></a>
+<span class="sourceLineNo">127</span>   */<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  private final void setDataForClientZkUntilSuccess(String node, byte[] data)<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      throws InterruptedException {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    while (!server.isStopped()) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      try {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        LOG.debug("Set data for remote " + node + ", client zk wather: " + clientZkWatcher);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>        ZKUtil.setData(clientZkWatcher, node, data);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>        break;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>      } catch (KeeperException.NoNodeException nne) {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>        // Node doesn't exist, create it and set value<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        try {<a name="line.137"></a>
+<span class="sourceLineNo">138</span>          ZKUtil.createNodeIfNotExistsNoWatch(clientZkWatcher, node, data, CreateMode.PERSISTENT);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>          break;<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        } catch (KeeperException.ConnectionLossException<a name="line.140"></a>
+<span class="sourceLineNo">141</span>            | KeeperException.SessionExpiredException ee) {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>          reconnectAfterExpiration();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        } catch (KeeperException e) {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>          LOG.warn(<a name="line.144"></a>
+<span class="sourceLineNo">145</span>            "Failed to create znode " + node + " due to: " + e.getMessage() + ", will retry later");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>        }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      } catch (KeeperException.ConnectionLossException<a name="line.147"></a>
+<span class="sourceLineNo">148</span>          | KeeperException.SessionExpiredException ee) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>        reconnectAfterExpiration();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      } catch (KeeperException e) {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        LOG.debug("Failed to set data to client ZK, will retry later", e);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      Threads.sleep(HConstants.SOCKET_RETRY_WAIT_MS);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  private final void reconnectAfterExpiration() throws InterruptedException {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    LOG.warn("ZK session expired or lost. Retry a new connection...");<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    try {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      clientZkWatcher.reconnectAfterExpiration();<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    } catch (IOException | KeeperException e) {<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      LOG.warn("Failed to reconnect to client zk after session expiration, will retry later", e);<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>  @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>  public void nodeCreated(String path) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    if (!validate(path)) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    try {<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      byte[] data = ZKUtil.getDataAndWatch(watcher, path);<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      upsertQueue(path, data);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    } catch (KeeperException e) {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      LOG.warn("Unexpected exception handling nodeCreated event", e);<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><a name="line.178"></a>
+<span class="sourceLineNo">179</span>  @Override<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  public void nodeDataChanged(String path) {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    if (validate(path)) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      nodeCreated(path);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    }<a name="line.183"></a>
+<span class="sourceLineNo">184</span>  }<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>  @Override<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public synchronized void nodeDeleted(String path) {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (validate(path)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      try {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>        if (ZKUtil.watchAndCheckExists(watcher, path)) {<a name="line.190"></a>
+<span class="sourceLineNo">191</span>          nodeCreated(path);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>        }<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      } catch (KeeperException e) {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        LOG.warn("Unexpected exception handling nodeDeleted event for path: " + path, e);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    }<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  }<a name="line.197"></a>
+<span class="sourceLineNo">198</span><a name="line.198"></a>
+<span class="sourceLineNo">199</span>  /**<a name="line.199"></a>
+<span class="sourceLineNo">200</span>   * Validate whether a znode path is watched by us<a name="line.200"></a>
+<span class="sourceLineNo">201</span>   * @param path the path to validate<a name="line.201"></a>
+<span class="sourceLineNo">202</span>   * @return true if the znode is watched by us<a name="line.202"></a>
+<span class="sourceLineNo">203</span>   */<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  abstract boolean validate(String path);<a name="line.204"></a>
+<span class="sourceLineNo">205</span><a name="line.205"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * @return the znode(s) to watch<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   */<a name="line.208"></a>
+<span class="sourceLineNo">209</span>  abstract Collection&lt;String&gt; getNodesToWatch();<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>   * Thread to synchronize znode data to client ZK cluster<a name="line.212"></a>
+<span class="sourceLineNo">213</span>   */<a name="line.213"></a>
+<span class="sourceLineNo">214</span>  class ClientZkUpdater extends Thread {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>    final String znode;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    final BlockingQueue&lt;byte[]&gt; queue;<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public ClientZkUpdater(String znode, BlockingQueue&lt;byte[]&gt; queue) {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      this.znode = znode;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      this.queue = queue;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      setName("ClientZKUpdater-" + znode);<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    }<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>    @Override<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    public void run() {<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      while (!server.isStopped()) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>        try {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>          byte[] data = queue.take();<a name="line.228"></a>
+<span class="sourceLineNo">229</span>          setDataForClientZkUntilSuccess(znode, data);<a name="line.229"></a>
+<span class="sourceLineNo">230</span>        } catch (InterruptedException e) {<a name="line.230"></a>
+<span class="sourceLineNo">231</span>          if (LOG.isDebugEnabled()) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>            LOG.debug(<a name="line.232"></a>
+<span class="sourceLineNo">233</span>              "Interrupted while checking whether need to update meta location to client zk");<a name="line.233"></a>
+<span class="sourceLineNo">234</span>          }<a name="line.234"></a>
+<span class="sourceLineNo">235</span>          Thread.currentThread().interrupt();<a name="line.235"></a>
+<span class="sourceLineNo">236</span>          break;<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        }<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    }<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>}<a name="line.241"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
new file mode 100644
index 0000000..8f3c7ae
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
@@ -0,0 +1,124 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.zksyncer;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.ArrayList;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import java.util.Collection;<a name="line.22"></a>
+<span class="sourceLineNo">023</span><a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.Server;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.26"></a>
+<span class="sourceLineNo">027</span><a name="line.27"></a>
+<span class="sourceLineNo">028</span>/**<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster<a name="line.29"></a>
+<span class="sourceLineNo">030</span> * if changed<a name="line.30"></a>
+<span class="sourceLineNo">031</span> */<a name="line.31"></a>
+<span class="sourceLineNo">032</span>@InterfaceAudience.Private<a name="line.32"></a>
+<span class="sourceLineNo">033</span>public class MasterAddressSyncer extends ClientZKSyncer {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>  private final String masterAddressZNode;<a name="line.34"></a>
+<span class="sourceLineNo">035</span><a name="line.35"></a>
+<span class="sourceLineNo">036</span>  public MasterAddressSyncer(ZKWatcher watcher, ZKWatcher clientZkWatcher, Server server) {<a name="line.36"></a>
+<span class="sourceLineNo">037</span>    super(watcher, clientZkWatcher, server);<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    masterAddressZNode = watcher.znodePaths.masterAddressZNode;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>  }<a name="line.39"></a>
+<span class="sourceLineNo">040</span><a name="line.40"></a>
+<span class="sourceLineNo">041</span>  @Override<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  boolean validate(String path) {<a name="line.42"></a>
+<span class="sourceLineNo">043</span>    return path.equals(masterAddressZNode);<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  }<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>  @Override<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  Collection&lt;String&gt; getNodesToWatch() {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    ArrayList&lt;String&gt; toReturn = new ArrayList&lt;&gt;();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    toReturn.add(masterAddressZNode);<a name="line.49"></a>
+<span class="sourceLineNo">050</span>    return toReturn;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  }<a name="line.51"></a>
+<span class="sourceLineNo">052</span>}<a name="line.52"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
new file mode 100644
index 0000000..74649d4
--- /dev/null
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
@@ -0,0 +1,118 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> *<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * or more contributor license agreements.  See the NOTICE file<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * distributed with this work for additional information<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * to you under the Apache License, Version 2.0 (the<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * "License"); you may not use this file except in compliance<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * with the License.  You may obtain a copy of the License at<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.11"></a>
+<span class="sourceLineNo">012</span> *<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * Unless required by applicable law or agreed to in writing, software<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * See the License for the specific language governing permissions and<a name="line.16"></a>
+<span class="sourceLineNo">017</span> * limitations under the License.<a name="line.17"></a>
+<span class="sourceLineNo">018</span> */<a name="line.18"></a>
+<span class="sourceLineNo">019</span>package org.apache.hadoop.hbase.master.zksyncer;<a name="line.19"></a>
+<span class="sourceLineNo">020</span><a name="line.20"></a>
+<span class="sourceLineNo">021</span>import java.util.Collection;<a name="line.21"></a>
+<span class="sourceLineNo">022</span><a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.Server;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.25"></a>
+<span class="sourceLineNo">026</span><a name="line.26"></a>
+<span class="sourceLineNo">027</span>/**<a name="line.27"></a>
+<span class="sourceLineNo">028</span> * Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster<a name="line.28"></a>
+<span class="sourceLineNo">029</span> * if changed<a name="line.29"></a>
+<span class="sourceLineNo">030</span> */<a name="line.30"></a>
+<span class="sourceLineNo">031</span>@InterfaceAudience.Private<a name="line.31"></a>
+<span class="sourceLineNo">032</span>public class MetaLocationSyncer extends ClientZKSyncer {<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  public MetaLocationSyncer(ZKWatcher watcher, ZKWatcher clientZkWatcher, Server server) {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    super(watcher, clientZkWatcher, server);<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  }<a name="line.35"></a>
+<span class="sourceLineNo">036</span><a name="line.36"></a>
+<span class="sourceLineNo">037</span>  @Override<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  boolean validate(String path) {<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    return watcher.znodePaths.isAnyMetaReplicaZNode(path);<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  }<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>  @Override<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  Collection&lt;String&gt; getNodesToWatch() {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>    return watcher.znodePaths.metaReplicaZNodes.values();<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  }<a name="line.45"></a>
+<span class="sourceLineNo">046</span>}<a name="line.46"></a>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[27/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
index 5d24607..b1a0fd3 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9};
+var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9,"i8":9,"i9":9,"i10":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -110,7 +110,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.Private
-public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.39">ZKConfig</a>
+public final class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.40">ZKConfig</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
 <div class="block">Utility methods for reading, and building the ZooKeeper configuration.
 
@@ -201,24 +201,30 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr id="i1" class="rowColor">
 <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/zookeeper/ZKConfig.html#getClientZKQuorumServersString-org.apache.hadoop.conf.Configuration-">getClientZKQuorumServersString</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
+<div class="block">Get the client ZK Quorum servers string</div>
+</td>
+</tr>
+<tr id="i2" 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/zookeeper/ZKConfig.html#getZKQuorumServersString-org.apache.hadoop.conf.Configuration-">getZKQuorumServersString</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Return the ZK Quorum servers string given the specified configuration.</div>
 </td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html#getZKQuorumServersStringFromHbaseConfig-org.apache.hadoop.conf.Configuration-">getZKQuorumServersStringFromHbaseConfig</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Return the ZK Quorum servers string given the specified configuration</div>
 </td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" 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/zookeeper/ZKConfig.html#getZooKeeperClusterKey-org.apache.hadoop.conf.Configuration-">getZooKeeperClusterKey</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Get the key to the ZK ensemble for this configuration without
  adding a name at the end</div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<tr id="i5" class="rowColor">
 <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/zookeeper/ZKConfig.html#getZooKeeperClusterKey-org.apache.hadoop.conf.Configuration-java.lang.String-">getZooKeeperClusterKey</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
@@ -226,26 +232,26 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  a name at the end</div>
 </td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html#makeZKProps-org.apache.hadoop.conf.Configuration-">makeZKProps</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Make a Properties object holding ZooKeeper config.</div>
 </td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" class="rowColor">
 <td class="colFirst"><code>private static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html#makeZKPropsFromHbaseConfig-org.apache.hadoop.conf.Configuration-">makeZKPropsFromHbaseConfig</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Make a Properties object holding ZooKeeper config.</div>
 </td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" 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/zookeeper/ZKConfig.html#standardizeZKQuorumServerString-java.lang.String-java.lang.String-">standardizeZKQuorumServerString</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;quorumStringInput,
                                <a href="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;clientPort)</code>
 <div class="block">Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','</div>
 </td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.html#transformClusterKey-java.lang.String-">transformClusterKey</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;key)</code>
 <div class="block">Separate the given key into the three configurations it should contain:
@@ -253,7 +259,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
  and zookeeper.znode.parent</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/zookeeper/ZKConfig.html#validateClusterKey-java.lang.String-">validateClusterKey</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;key)</code>
 <div class="block">Verifies that the given key matches the expected format for a ZooKeeper cluster key.</div>
@@ -287,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>VARIABLE_START</h4>
-<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.41">VARIABLE_START</a></pre>
+<pre>private static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.42">VARIABLE_START</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.zookeeper.ZKConfig.VARIABLE_START">Constant Field Values</a></dd>
@@ -308,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKConfig</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.43">ZKConfig</a>()</pre>
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.44">ZKConfig</a>()</pre>
 </li>
 </ul>
 </li>
@@ -325,7 +331,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>makeZKProps</h4>
-<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.53">makeZKProps</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>public static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.54">makeZKProps</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Make a Properties object holding ZooKeeper config.
  Parses the corresponding config options from the HBase XML configs
  and generates the appropriate ZooKeeper properties.</div>
@@ -343,7 +349,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>makeZKPropsFromHbaseConfig</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.65">makeZKPropsFromHbaseConfig</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Properties.html?is-external=true" title="class or interface in java.util">Properties</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.66">makeZKPropsFromHbaseConfig</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Make a Properties object holding ZooKeeper config.
  Parses the corresponding config options from the HBase XML configs
  and generates the appropriate ZooKeeper properties.</div>
@@ -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>getZKQuorumServersStringFromHbaseConfig</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.120">getZKQuorumServersStringFromHbaseConfig</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.121">getZKQuorumServersStringFromHbaseConfig</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Return the ZK Quorum servers string given the specified configuration</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -377,7 +383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getZKQuorumServersString</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/zookeeper/ZKConfig.html#line.134">getZKQuorumServersString</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/zookeeper/ZKConfig.html#line.135">getZKQuorumServersString</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Return the ZK Quorum servers string given the specified configuration.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -391,7 +397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildZKQuorumServerString</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/zookeeper/ZKConfig.html#line.145">buildZKQuorumServerString</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;serverHosts,
+<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/zookeeper/ZKConfig.html#line.146">buildZKQuorumServerString</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;serverHosts,
                                                <a href="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;clientPort)</pre>
 <div class="block">Build the ZK quorum server string with "server:clientport" list, separated by ','</div>
 <dl>
@@ -409,7 +415,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>validateClusterKey</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.178">validateClusterKey</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;key)
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.179">validateClusterKey</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;key)
                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Verifies that the given key matches the expected format for a ZooKeeper cluster key.
  The Quorum for the ZK cluster can have one the following formats (see examples below):
@@ -436,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>transformClusterKey</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.190">transformClusterKey</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;key)
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKConfig.ZKClusterKey</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.191">transformClusterKey</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;key)
                                                  throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Separate the given key into the three configurations it should contain:
  hbase.zookeeper.quorum, hbase.zookeeper.client.port
@@ -457,7 +463,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getZooKeeperClusterKey</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/zookeeper/ZKConfig.html#line.244">getZooKeeperClusterKey</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/zookeeper/ZKConfig.html#line.245">getZooKeeperClusterKey</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <div class="block">Get the key to the ZK ensemble for this configuration without
  adding a name at the end</div>
 <dl>
@@ -474,7 +480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getZooKeeperClusterKey</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/zookeeper/ZKConfig.html#line.255">getZooKeeperClusterKey</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<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/zookeeper/ZKConfig.html#line.256">getZooKeeperClusterKey</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Get the key to the ZK ensemble for this configuration and append
  a name at the end</div>
@@ -490,10 +496,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="standardizeZKQuorumServerString-java.lang.String-java.lang.String-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>standardizeZKQuorumServerString</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/zookeeper/ZKConfig.html#line.277">standardizeZKQuorumServerString</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;quorumStringInput,
+<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/zookeeper/ZKConfig.html#line.278">standardizeZKQuorumServerString</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;quorumStringInput,
                                                      <a href="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;clientPort)</pre>
 <div class="block">Standardize the ZK quorum string: make it a "server:clientport" list, separated by ','</div>
 <dl>
@@ -505,6 +511,22 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="getClientZKQuorumServersString-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getClientZKQuorumServersString</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/zookeeper/ZKConfig.html#line.320">getClientZKQuorumServersString</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<div class="block">Get the client ZK Quorum servers string</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conf</code> - the configuration to read</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>Client quorum servers, or null if not specified</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKListener.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKListener.html
index 9675a2c..1a1ec41 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKListener.html
@@ -109,7 +109,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <dl>
 <dt>Direct Known Subclasses:</dt>
-<dd><a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/DeletionListener.html" title="class in org.apache.hadoop.hbase.zookeeper">DeletionListener</a>, <a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.PeerRegionServerListener.html" title="class in org.apache.hadoop.hbase.replication">HBaseReplicationEndpoint.PeerRegionServerListener</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.mast
 er">RegionServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html" title="class in org.apache.hadoop.hbase.replication">ReplicationTrackerZKImpl.OtherRegionServerWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/backup/example/TableHFileArchiveTracker.html" title="class in org.apache.hadoop.hbase.backup.example">TableHFileArchiveTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKLeaderManager</a>, <a href="../../../../../org/apache/hadoop/hbase/ZKNamespaceManager.html" title="class in org.apache.hadoop.hbase">ZKNamespaceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKNodeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html" title="class in org.apache.hadoop.hb
 ase.security.access">ZKPermissionWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure/ZKProcedureUtil.html" title="class in org.apache.hadoop.hbase.procedure">ZKProcedureUtil</a>, <a href="../../../../../org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZKSplitLogManagerCoordination</a>, <a href="../../../../../org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZkSplitLogWorkerCoordination</a>, <a href="../../../../../org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.html" title="class in org.apache.hadoop.hbase.security.visibility">ZKVisibilityLabelWatcher</a></dd>
+<dd><a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/DeletionListener.html" title="class in org.apache.hadoop.hbase.zookeeper">DeletionListener</a>, <a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.PeerRegionServerListener.html" title="class in org.apache.hadoop.hbase.replication">HBaseReplicationEndpoint.PeerRegionServerListener</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeepe
 r">MasterMaintenanceModeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationTrackerZKImpl.OtherRegionServerWatcher.html" title="class in org.apache.hadoop.hbase.replication">ReplicationTrackerZKImpl.OtherRegionServerWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/backup/example/TableHFileArchiveTracker.html" title="class in org.apache.hadoop.hbase.backup.example">TableHFileArchiveTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKLeaderManager.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKLeaderManager</a>, <a href="../../../../../org/apache/hadoop/hbase/ZKNamespaceManager.html" title="class in org.apache.hadoop.hbase">ZKNamespaceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKNodeTracker.html" title="class in org.apache.hadoop.
 hbase.zookeeper">ZKNodeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/security/access/ZKPermissionWatcher.html" title="class in org.apache.hadoop.hbase.security.access">ZKPermissionWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/procedure/ZKProcedureUtil.html" title="class in org.apache.hadoop.hbase.procedure">ZKProcedureUtil</a>, <a href="../../../../../org/apache/hadoop/hbase/security/token/ZKSecretWatcher.html" title="class in org.apache.hadoop.hbase.security.token">ZKSecretWatcher</a>, <a href="../../../../../org/apache/hadoop/hbase/coordination/ZKSplitLogManagerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZKSplitLogManagerCoordination</a>, <a href="../../../../../org/apache/hadoop/hbase/coordination/ZkSplitLogWorkerCoordination.html" title="class in org.apache.hadoop.hbase.coordination">ZkSplitLogWorkerCoordination</a>, <a href="../../../../../org/apache/hadoop/hbase/security/visibility/ZKVisibilityLabelWatcher.html" title=
 "class in org.apache.hadoop.hbase.security.visibility">ZKVisibilityLabelWatcher</a></dd>
 </dl>
 <hr>
 <br>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
index 6b56245..fb9a5c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html
@@ -236,6 +236,15 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <div class="block">Instantiate a ZooKeeper connection and watcher.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-boolean-">ZKWatcher</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
+         <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
+         boolean&nbsp;canCreateBaseZNode,
+         boolean&nbsp;clientZK)</code>
+<div class="block">Instantiate a ZooKeeper connection and watcher.</div>
+</td>
+</tr>
 </table>
 </li>
 </ul>
@@ -578,7 +587,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <a name="ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>ZKWatcher</h4>
 <pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.116">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
@@ -602,6 +611,36 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 </dl>
 </li>
 </ul>
+<a name="ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-boolean-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ZKWatcher</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.135">ZKWatcher</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
+                 <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
+                 boolean&nbsp;canCreateBaseZNode,
+                 boolean&nbsp;clientZK)
+          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
+                 <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></pre>
+<div class="block">Instantiate a ZooKeeper connection and watcher.</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>conf</code> - the configuration to use</dd>
+<dd><code>identifier</code> - string that is passed to RecoverableZookeeper to be used as identifier for
+          this instance. Use null for default.</dd>
+<dd><code>abortable</code> - Can be null if there is on error there is no host to abort: e.g. client
+          context.</dd>
+<dd><code>canCreateBaseZNode</code> - true if a base ZNode can be created</dd>
+<dd><code>clientZK</code> - whether this watcher is set to access client ZK</dd>
+<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> - if the connection to ZooKeeper fails</dd>
+<dd><code><a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></code> - if the connection to Zookeeper fails when create base
+           ZNodes</dd>
+</dl>
+</li>
+</ul>
 </li>
 </ul>
 <!-- ============ METHOD DETAIL ========== -->
@@ -616,7 +655,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>createBaseZNodes</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.145">createBaseZNodes</a>()
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.180">createBaseZNodes</a>()
                        throws <a href="../../../../../org/apache/hadoop/hbase/ZooKeeperConnectionException.html" title="class in org.apache.hadoop.hbase">ZooKeeperConnectionException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -630,7 +669,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndSetZNodeAcls</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.168">checkAndSetZNodeAcls</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.203">checkAndSetZNodeAcls</a>()</pre>
 <div class="block">On master start, we check the znode ACLs under the root directory and set the ACLs properly
  if needed. If the cluster goes from an unsecure setup to a secure setup, this step is needed
  so that the existing znodes created with open permissions are now changed with restrictive
@@ -643,7 +682,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>setZnodeAclsRecursive</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.197">setZnodeAclsRecursive</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;znode)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.232">setZnodeAclsRecursive</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;znode)
                             throws org.apache.zookeeper.KeeperException,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <div class="block">Set the znode perms recursively. This will do post-order recursion, so that baseZnode ACLs
@@ -663,7 +702,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>isBaseZnodeAclSetup</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.214">isBaseZnodeAclSetup</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;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.249">isBaseZnodeAclSetup</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;org.apache.zookeeper.data.ACL&gt;&nbsp;acls)
                              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 whether the ACLs returned from the base znode (/hbase) is set for secure setup.</div>
 <dl>
@@ -682,7 +721,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>checkACLForSuperUsers</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.290">checkACLForSuperUsers</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;superUsers,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.325">checkACLForSuperUsers</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;superUsers,
                                       <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.zookeeper.data.ACL&gt;&nbsp;acls)</pre>
 </li>
 </ul>
@@ -692,7 +731,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>isSuperUserId</h4>
-<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.320">isSuperUserId</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;superUsers,
+<pre>public static&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.355">isSuperUserId</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;superUsers,
                                     org.apache.zookeeper.data.Id&nbsp;id)</pre>
 </li>
 </ul>
@@ -702,7 +741,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <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/zookeeper/ZKWatcher.html#line.331">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/zookeeper/ZKWatcher.html#line.366">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>
@@ -715,7 +754,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>prefix</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/zookeeper/ZKWatcher.html#line.341">prefix</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;str)</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/zookeeper/ZKWatcher.html#line.376">prefix</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;str)</pre>
 <div class="block">Adds this instance's identifier as a prefix to the passed <code>str</code></div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -732,7 +771,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaReplicaNodes</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/zookeeper/ZKWatcher.html#line.350">getMetaReplicaNodes</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/zookeeper/ZKWatcher.html#line.385">getMetaReplicaNodes</a>()
                                  throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Get the znodes corresponding to the meta replicas from ZK</div>
 <dl>
@@ -749,7 +788,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>registerListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.368">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.403">registerListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
 <div class="block">Register the specified listener to receive ZooKeeper events.</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -763,7 +802,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>registerListenerFirst</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.377">registerListenerFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.412">registerListenerFirst</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
 <div class="block">Register the specified listener to receive ZooKeeper events and add it as
  the first in the list of current listeners.</div>
 <dl>
@@ -778,7 +817,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterListener</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.381">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.416">unregisterListener</a>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&nbsp;listener)</pre>
 </li>
 </ul>
 <a name="unregisterAllListeners--">
@@ -787,7 +826,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>unregisterAllListeners</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.388">unregisterAllListeners</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.423">unregisterAllListeners</a>()</pre>
 <div class="block">Clean all existing listeners</div>
 </li>
 </ul>
@@ -797,7 +836,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getListeners</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/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.395">getListeners</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.430">getListeners</a>()</pre>
 <div class="block">Get a copy of current registered listeners</div>
 </li>
 </ul>
@@ -807,7 +846,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getNumberOfListeners</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.402">getNumberOfListeners</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.437">getNumberOfListeners</a>()</pre>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
 <dd>The number of currently registered listeners</dd>
@@ -820,7 +859,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getRecoverableZooKeeper</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.410">getRecoverableZooKeeper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RecoverableZooKeeper.html" title="class in org.apache.hadoop.hbase.zookeeper">RecoverableZooKeeper</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.445">getRecoverableZooKeeper</a>()</pre>
 <div class="block">Get the connection to ZooKeeper.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -834,7 +873,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>reconnectAfterExpiration</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.414">reconnectAfterExpiration</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.449">reconnectAfterExpiration</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,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -852,7 +891,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuorum</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/zookeeper/ZKWatcher.html#line.422">getQuorum</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/zookeeper/ZKWatcher.html#line.457">getQuorum</a>()</pre>
 <div class="block">Get the quorum address of this instance.</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -866,7 +905,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getZNodePaths</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.431">getZNodePaths</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZNodePaths.html" title="class in org.apache.hadoop.hbase.zookeeper">ZNodePaths</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.466">getZNodePaths</a>()</pre>
 <div class="block">Get the znodePaths.
  <p>
  Mainly used for mocking as mockito can not mock a field access.</div>
@@ -878,7 +917,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>process</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.442">process</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.477">process</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
 <div class="block">Method called from ZooKeeper for events and connection status.
  <p>
  Valid events are passed along to listeners.  Connection status changes
@@ -895,7 +934,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>connectionEvent</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.500">connectionEvent</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.535">connectionEvent</a>(org.apache.zookeeper.WatchedEvent&nbsp;event)</pre>
 <div class="block">Called when there is a connection-related event via the Watcher callback.
  <p>
  If Disconnected or Expired, this should shutdown the cluster. But, since
@@ -915,7 +954,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>sync</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.546">sync</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;path)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.581">sync</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;path)
           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Forces a synchronization of this ZooKeeper client connection.
  <p>
@@ -939,7 +978,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>keeperException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.560">keeperException</a>(org.apache.zookeeper.KeeperException&nbsp;ke)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.595">keeperException</a>(org.apache.zookeeper.KeeperException&nbsp;ke)
                      throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Handles KeeperExceptions in client calls.
  <p>
@@ -961,7 +1000,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>interruptedException</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.570">interruptedException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.605">interruptedException</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie)
                           throws org.apache.zookeeper.KeeperException</pre>
 <div class="block">Handles InterruptedExceptions in client calls.</div>
 <dl>
@@ -978,7 +1017,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>interruptedExceptionNoThrow</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.581">interruptedExceptionNoThrow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.616">interruptedExceptionNoThrow</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a>&nbsp;ie,
                                         boolean&nbsp;throwLater)</pre>
 <div class="block">Log the InterruptedException and interrupt current thread</div>
 <dl>
@@ -994,7 +1033,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.594">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.629">close</a>()</pre>
 <div class="block">Close the connection to ZooKeeper.</div>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -1010,7 +1049,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>getConfiguration</h4>
-<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.602">getConfiguration</a>()</pre>
+<pre>public&nbsp;org.apache.hadoop.conf.Configuration&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.637">getConfiguration</a>()</pre>
 </li>
 </ul>
 <a name="abort-java.lang.String-java.lang.Throwable-">
@@ -1019,7 +1058,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockList">
 <li class="blockList">
 <h4>abort</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.607">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;why,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.642">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;why,
                   <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;e)</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>
@@ -1038,7 +1077,7 @@ implements org.apache.zookeeper.Watcher, <a href="../../../../../org/apache/hado
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isAborted</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.616">isAborted</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#line.651">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
index 324f290..3103705 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html
@@ -99,28 +99,32 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication</a></td>
 <td class="colLast">
 <div class="block">Multi Cluster Replication</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.token">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -235,6 +239,43 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></span></code>
+<div class="block">Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if
+ changed
+ <p/>
+ The target znode(s) is given through <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--"><code>ClientZKSyncer.getNodesToWatch()</code></a> method</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></span></code>
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></span></code>
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.procedure">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
index 8548355..f4ba195 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html
@@ -103,52 +103,56 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication</a></td>
 <td class="colLast">
 <div class="block">Multi Cluster Replication</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.master">org.apache.hadoop.hbase.replication.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rsgroup">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.token">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.hbck">org.apache.hadoop.hbase.util.hbck</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -403,6 +407,47 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> declared as <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ClientZKSyncer.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#clientZkWatcher">clientZkWatcher</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> with parameters of type <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#ClientZKSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">ClientZKSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+              <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+              <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#MasterAddressSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MasterAddressSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                   <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                   <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#MetaLocationSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MetaLocationSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                  <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                  <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.procedure">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
index 5c7e67e..89accc8 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/package-use.html
@@ -109,52 +109,56 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication</a></td>
 <td class="colLast">
 <div class="block">Multi Cluster Replication</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.master">org.apache.hadoop.hbase.replication.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rsgroup">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.token">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.hbck">org.apache.hadoop.hbase.util.hbck</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -326,6 +330,28 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a> used by <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKListener.html#org.apache.hadoop.hbase.master.zksyncer">ZKListener</a>
+<div class="block">Base class for internal listeners of ZooKeeper events.</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/class-use/ZKWatcher.html#org.apache.hadoop.hbase.master.zksyncer">ZKWatcher</a>
+<div class="block">Acts as the single ZooKeeper Watcher.</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.procedure">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/overview-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-frame.html b/devapidocs/overview-frame.html
index d7a7212..160712c 100644
--- a/devapidocs/overview-frame.html
+++ b/devapidocs/overview-frame.html
@@ -71,6 +71,7 @@
 <li><a href="org/apache/hadoop/hbase/master/procedure/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.master.procedure</a></li>
 <li><a href="org/apache/hadoop/hbase/master/replication/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.master.replication</a></li>
 <li><a href="org/apache/hadoop/hbase/master/snapshot/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.master.snapshot</a></li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.master.zksyncer</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.metrics</a></li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.metrics.impl</a></li>
 <li><a href="org/apache/hadoop/hbase/mob/package-frame.html" target="packageFrame">org.apache.hadoop.hbase.mob</a></li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
index 32a8ed1..7aeb6fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
@@ -333,3464 +333,3478 @@
 <span class="sourceLineNo">325</span><a name="line.325"></a>
 <span class="sourceLineNo">326</span>  volatile boolean killed = false;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected final Configuration conf;<a name="line.328"></a>
+<span class="sourceLineNo">328</span>  private volatile boolean shutDown = false;<a name="line.328"></a>
 <span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private Path rootDir;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private Path walRootDir;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.333"></a>
+<span class="sourceLineNo">330</span>  protected final Configuration conf;<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Path rootDir;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private Path walRootDir;<a name="line.333"></a>
 <span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  final int numRetries;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  protected final int threadWakeFrequency;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected final int msgInterval;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  protected final int numRegionsToReport;<a name="line.339"></a>
+<span class="sourceLineNo">335</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  final int numRetries;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected final int threadWakeFrequency;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  protected final int msgInterval;<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  // Stub to do region server status calls against the master.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  RpcClient rpcClient;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.350"></a>
+<span class="sourceLineNo">341</span>  protected final int numRegionsToReport;<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // Stub to do region server status calls against the master.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  RpcClient rpcClient;<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // into web context.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  protected InfoServer infoServer;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private JvmPauseMonitor pauseMonitor;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** region server process name */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public static final String REGIONSERVER = "regionserver";<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  MetricsRegionServer metricsRegionServer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  MetricsTable metricsTable;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private SpanReceiverHost spanReceiverHost;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ChoreService choreService;<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>   * Check for compactions requests.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  ScheduledChore compactionChecker;<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Check for flushes<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  ScheduledChore periodicFlusher;<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  protected volatile WALFactory walFactory;<a name="line.380"></a>
+<span class="sourceLineNo">352</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  // into web context.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  protected InfoServer infoServer;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private JvmPauseMonitor pauseMonitor;<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /** region server process name */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public static final String REGIONSERVER = "regionserver";<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  MetricsRegionServer metricsRegionServer;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  MetricsTable metricsTable;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private SpanReceiverHost spanReceiverHost;<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>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ChoreService choreService;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Check for compactions requests.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  ScheduledChore compactionChecker;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /*<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Check for flushes<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  ScheduledChore periodicFlusher;<a name="line.380"></a>
 <span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  // WAL roller. log is protected rather than private to avoid<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // eclipse warning when accessed by inner classes<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  protected LogRoller walRoller;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // A thread which calls reportProcedureDone<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  // flag set after we're done setting up server threads<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // zookeeper connection and watcher<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected final ZKWatcher zooKeeper;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // master address tracker<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // Cluster Status Tracker<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  // Log Splitting Worker<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private SplitLogWorker splitLogWorker;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // A sleeper that sleeps for msgInterval.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  protected final Sleeper sleeper;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final int operationTimeout;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private final int shortOperationTimeout;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.410"></a>
+<span class="sourceLineNo">382</span>  protected volatile WALFactory walFactory;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // WAL roller. log is protected rather than private to avoid<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  // eclipse warning when accessed by inner classes<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  protected LogRoller walRoller;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  // A thread which calls reportProcedureDone<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  // flag set after we're done setting up server threads<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  // zookeeper connection and watcher<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected final ZKWatcher zooKeeper;<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // master address tracker<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  // Cluster Status Tracker<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  // Log Splitting Worker<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private SplitLogWorker splitLogWorker;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // A sleeper that sleeps for msgInterval.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected final Sleeper sleeper;<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private final int operationTimeout;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final int shortOperationTimeout;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // Cache configuration and block cache reference<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  protected CacheConfig cacheConfig;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // Cache configuration for mob<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  final MobCacheConfig mobCacheConfig;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /** The health check chore. */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private HealthCheckChore healthCheckChore;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /** The nonce manager chore. */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private ScheduledChore nonceManagerChore;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.423"></a>
+<span class="sourceLineNo">412</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  // Cache configuration and block cache reference<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  protected CacheConfig cacheConfig;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  // Cache configuration for mob<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  final MobCacheConfig mobCacheConfig;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  /** The health check chore. */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private HealthCheckChore healthCheckChore;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  /** The nonce manager chore. */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ScheduledChore nonceManagerChore;<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>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * against  Master.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  protected ServerName serverName;<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /*<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * hostname specified by hostname config<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected String useThisHostnameInstead;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  // key to the config parameter of server hostname<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  // both master and region server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.441"></a>
+<span class="sourceLineNo">425</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * against  Master.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  protected ServerName serverName;<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /*<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * hostname specified by hostname config<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  protected String useThisHostnameInstead;<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  // key to the config parameter of server hostname<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  // both master and region server<a name="line.441"></a>
 <span class="sourceLineNo">442</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  // Exception will be thrown if both are used.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * This servers startcode.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  protected final long startcode;<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>   * Unique identifier for the cluster we are a part of.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  protected String clusterId;<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * MX Bean for RegionServerInfo<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private ObjectName mxBean = null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * Chore to clean periodically the moved region list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  // chore for refreshing store files for secondary regions<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  private StorefileRefresherChore storefileRefresher;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  private RegionServerCoprocessorHost rsHost;<a name="line.473"></a>
+<span class="sourceLineNo">443</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  // Exception will be thrown if both are used.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * This servers startcode.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  protected final long startcode;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Unique identifier for the cluster we are a part of.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected String clusterId;<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * MX Bean for RegionServerInfo<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private ObjectName mxBean = null;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Chore to clean periodically the moved region list<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  // chore for refreshing store files for secondary regions<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  private StorefileRefresherChore storefileRefresher;<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.475"></a>
+<span class="sourceLineNo">475</span>  private RegionServerCoprocessorHost rsHost;<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<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>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * HBASE-3787) are:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  final ServerNonceManager nonceManager;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private UserProvider userProvider;<a name="line.500"></a>
+<span class="sourceLineNo">477</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * HBASE-3787) are:<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  final ServerNonceManager nonceManager;<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected final RSRpcServices rpcServices;<a name="line.502"></a>
+<span class="sourceLineNo">502</span>  private UserProvider userProvider;<a name="line.502"></a>
 <span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  protected CoordinatedStateManager csm;<a name="line.504"></a>
+<span class="sourceLineNo">504</span>  protected final RSRpcServices rpcServices;<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  protected final ConfigurationManager configurationManager;<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @VisibleForTesting<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  private volatile ThroughputController flushThroughputController;<a name="line.515"></a>
+<span class="sourceLineNo">506</span>  protected CoordinatedStateManager csm;<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>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected final ConfigurationManager configurationManager;<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.517"></a>
+<span class="sourceLineNo">517</span>  private volatile ThroughputController flushThroughputController;<a name="line.517"></a>
 <span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  protected FileSystemUtilizationChore fsUtilizationChore;<a name="line.519"></a>
+<span class="sourceLineNo">519</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.519"></a>
 <span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<a name="line.521"></a>
+<span class="sourceLineNo">521</span>  protected FileSystemUtilizationChore fsUtilizationChore;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  private final boolean masterless;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * Starts a HRegionServer at the default location<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  // Don't start any services or managers in here in the Constructor.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    super("RegionServer");  // thread name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TraceUtil.initTracer(conf);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      this.startcode = System.currentTimeMillis();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.conf = conf;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.fsOk = true;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      HFile.checkHFileVersion(this.conf);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      checkCodecs(this.conf);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      decorateRegionServerConfiguration(this.conf);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Disable usage of meta replicas in the regionserver<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Config'ed params<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.561"></a>
+<span class="sourceLineNo">523</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  private final boolean masterless;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<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>   * Starts a HRegionServer at the default location<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  // Don't start any services or managers in here in the Constructor.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    super("RegionServer");  // thread name<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    TraceUtil.initTracer(conf);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      this.startcode = System.currentTimeMillis();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      this.conf = conf;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      this.fsOk = true;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      HFile.checkHFileVersion(this.conf);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      checkCodecs(this.conf);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      decorateRegionServerConfiguration(this.conf);<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // Disable usage of meta replicas in the regionserver<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      // Config'ed params<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.561"></a>
 <span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.566"></a>
+<span class="sourceLineNo">563</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>      this.abortRequested = false;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      this.stopped = false;<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>      rpcServices = createRpcServices();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      String hostName =<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              : this.useThisHostnameInstead;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>      // login the zookeeper client principal (if using security)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      // login the server principal (if using secure Hadoop)<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      login(userProvider, hostName);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      // init superusers and add the server principal (if using security)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      // or process owner as default super user.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      Superusers.initialize(conf);<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      cacheConfig = new CacheConfig(conf);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        }<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>      initializeFileSystem();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>      this.configurationManager = new ConfigurationManager();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        // Open connection to zookeeper and set primary watcher<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        if (!this.masterless) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>          masterAddressTracker.start();<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          clusterStatusTracker.start();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          masterAddressTracker = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          clusterStatusTracker = null;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        zooKeeper = null;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        masterAddressTracker = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        clusterStatusTracker = null;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      this.rpcServices.start(zooKeeper);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // class HRS. TODO.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      this.choreService = new ChoreService(getName(), true);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      this.executorService = new ExecutorService(getName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      putUpWebUI();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } catch (Throwable t) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // cause of failed startup is lost.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      LOG.error("Failed construction RegionServer", t);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw t;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  // HMaster should override this method to load the specific config for master<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        throw new IOException(msg);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        return rpcServices.isa.getHostName();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return hostname;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  /**<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * If running on Windows, do windows-specific setup.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        public void handle(Signal signal) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          conf.reloadConfiguration();<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          cm.notifyAllObservers(conf);<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>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    NettyEventLoopGroupConfig nelgc =<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      new NettyEventLoopGroupConfig(conf, "RS-EventLoopGroup");<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    NettyRpcClientConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    NettyAsyncFSWALConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    return nelgc;<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>  private void initializeFileSystem() throws IOException {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    // Get fs instance used by this RS.  Do we use checksum verification in the hbase? If hbase<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    // checksum verification enabled, then automatically switch off hdfs checksum verification.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    FSUtils.setFsDefault(this.conf, FSUtils.getWALRootDir(this.conf));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    this.walFs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this.walRootDir = FSUtils.getWALRootDir(this.conf);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    // Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // underlying hadoop hdfs accessors will be going against wrong filesystem<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    // (unless all is set to defaults).<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    this.fs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    this.rootDir = FSUtils.getRootDir(this.conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    this.tableDescriptors = getFsTableDescriptors();<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>  protected TableDescriptors getFsTableDescriptors() throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return new FSTableDescriptors(this.conf,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.fs, this.rootDir, !canUpdateTableDescriptor(), false, getMetaTableObserver());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return null;<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    user.login("hbase.regionserver.keytab.file",<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      "hbase.regionserver.kerberos.principal", host);<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>  protected void waitForMasterActive() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>  protected String getProcessName() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return REGIONSERVER;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  protected boolean canCreateBaseZNode() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.masterless;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  protected boolean canUpdateTableDescriptor() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    return false;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return new RSRpcServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  protected void configureInfoServer() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return RSDumpServlet.class;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    /*<a name="line.753"></a>
-<span class="sourceLineNo">754</span>     * No stacking of instances is allowed for a single executorService name<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.756"></a>
-<span class="sourceLineNo">757</span>        instance.getDescriptorForType();<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.760"></a>
-<span class="sourceLineNo">761</span>          + " already registered, rejecting request from " + instance);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return false;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    if (LOG.isDebugEnabled()) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return true;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * @throws IOException<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  @VisibleForTesting<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // and remote invocations.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      serverName, rpcServices, rpcServices);<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>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @param c<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @throws IOException<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    // check to see if the codec list is available:<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    if (codecs == null) return;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    for (String codec : codecs) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        throw new IOException("Compression codec " + codec +<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          " not supported, aborting RS construction");<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><a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public String getClusterId() {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    return this.clusterId;<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>   * Setup our cluster connection if not already initialized.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @throws IOException<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (clusterConnection == null) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      clusterConnection = createClusterConnection();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      metaTableLocator = new MetaTableLocator();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   */<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  private void preRegistrationInitialization() {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    try {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      initializeZooKeeper();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      setupClusterConnection();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      // Setup RPC client for master communication<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    } catch (Throwable t) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      // Call stop if error or process will stick around for ever since server<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // puts up non-daemon threads.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      this.rpcServices.stop();<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * &lt;p&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * Finally open long-living server short-circuit connection.<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    justification="cluster Id znode read would give us correct response")<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // Nothing to do in here if no Master in the mix.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (this.masterless) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // block until a master is available.  No point in starting up if no master<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // running.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // when ready.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.860"></a>
+<span class="sourceLineNo">568</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      this.abortRequested = false;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      this.stopped = false;<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      rpcServices = createRpcServices();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      String hostName =<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              : this.useThisHostnameInstead;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // login the zookeeper client principal (if using security)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      // login the server principal (if using secure Hadoop)<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      login(userProvider, hostName);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      // init superusers and add the server principal (if using security)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      // or process owner as default super user.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Superusers.initialize(conf);<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      cacheConfig = new CacheConfig(conf);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>        @Override<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      };<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>      initializeFileSystem();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this.configurationManager = new ConfigurationManager();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Open connection to zookeeper and set primary watcher<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        if (!this.masterless) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          masterAddressTracker.start();<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          clusterStatusTracker.start();<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          masterAddressTracker = null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          clusterStatusTracker = null;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        zooKeeper = null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        masterAddressTracker = null;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        clusterStatusTracker = null;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.rpcServices.start(zooKeeper);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      // class HRS. TODO.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      this.choreService = new ChoreService(getName(), true);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      this.executorService = new ExecutorService(getName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      putUpWebUI();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    } catch (Throwable t) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      // cause of failed startup is lost.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      LOG.error("Failed construction RegionServer", t);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      throw t;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  // HMaster should override this method to load the specific config for master<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.659"></a>
+<span class="sourceLineNo">660</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        throw new IOException(msg);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        return rpcServices.isa.getHostName();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      }<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    } else {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      return hostname;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * If running on Windows, do windows-specific setup.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        public void handle(Signal signal) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          conf.reloadConfiguration();<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          cm.notifyAllObservers(conf);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      });<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    }<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>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    NettyEventLoopGroupConfig nelgc =<a

<TRUNCATED>

[30/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
index 46a36b5..3a6187e 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3474">HRegionServer.MovedRegionsCleaner</a>
+<pre>protected static final class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3484">HRegionServer.MovedRegionsCleaner</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></pre>
 <div class="block">Creates a Chore thread to clean the moved region cache.</div>
@@ -242,7 +242,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3475">regionServer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3485">regionServer</a></pre>
 </li>
 </ul>
 <a name="stoppable">
@@ -251,7 +251,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>stoppable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3476">stoppable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3486">stoppable</a></pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MovedRegionsCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3478">MovedRegionsCleaner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
+<pre>private&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3488">MovedRegionsCleaner</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;regionServer,
                             <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a>&nbsp;stoppable)</pre>
 </li>
 </ul>
@@ -286,7 +286,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>create</h4>
-<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3486">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;rs)</pre>
+<pre>static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3496">create</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;rs)</pre>
 </li>
 </ul>
 <a name="chore--">
@@ -295,7 +295,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3497">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3507">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>
@@ -310,7 +310,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockList">
 <li class="blockList">
 <h4>stop</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3502">stop</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;why)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3512">stop</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;why)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#stop-java.lang.String-">Stoppable</a></code></span></div>
 <div class="block">Stop this service.
  Implementers should favor logging errors over throwing RuntimeExceptions.</div>
@@ -328,7 +328,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title
 <ul class="blockListLast">
 <li class="blockList">
 <h4>isStopped</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3507">isStopped</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html#line.3517">isStopped</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html#isStopped--">isStopped</a></code>&nbsp;in interface&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
index a9b1c72..907aacc 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1757">HRegionServer.PeriodicMemStoreFlusher</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1767">HRegionServer.PeriodicMemStoreFlusher</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></pre>
 </li>
 </ul>
@@ -228,7 +228,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>server</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1758">server</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1768">server</a></pre>
 </li>
 </ul>
 <a name="RANGE_OF_DELAY">
@@ -237,7 +237,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>RANGE_OF_DELAY</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1759">RANGE_OF_DELAY</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1769">RANGE_OF_DELAY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.PeriodicMemStoreFlusher.RANGE_OF_DELAY">Constant Field Values</a></dd>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MIN_DELAY_TIME</h4>
-<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1760">MIN_DELAY_TIME</a></pre>
+<pre>static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1770">MIN_DELAY_TIME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.PeriodicMemStoreFlusher.MIN_DELAY_TIME">Constant Field Values</a></dd>
@@ -271,7 +271,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>PeriodicMemStoreFlusher</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1761">PeriodicMemStoreFlusher</a>(int&nbsp;cacheFlushInterval,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1771">PeriodicMemStoreFlusher</a>(int&nbsp;cacheFlushInterval,
                                <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;server)</pre>
 </li>
 </ul>
@@ -289,7 +289,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1767">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html#line.1777">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
index f845807..1427c4c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
@@ -132,233 +132,239 @@
 <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>  public ReadOnlyZKClient(Configuration conf) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.retryIntervalMs =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    LOG.info(<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected final String path;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.145"></a>
+<span class="sourceLineNo">127</span>    // We might use a different ZK for client access<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    String clientZkQuorumServers = ZKConfig.getClientZKQuorumServersString(conf);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    if (clientZkQuorumServers != null) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      this.connectString = clientZkQuorumServers;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    this.retryIntervalMs =<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    LOG.info(<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>    private final String operationType;<a name="line.147"></a>
+<span class="sourceLineNo">147</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    private int retries;<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    protected final String path;<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      this.path = path;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.future = future;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.operationType = operationType;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">151</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    private final String operationType;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    private int retries;<a name="line.155"></a>
 <span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      tasks.add(new Task() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>        @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          pendingRequests--;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          Code code = Code.get(rc);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          if (code == Code.OK) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            future.complete(ret);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          } else if (code == Code.NONODE) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>            if (errorIfNoNode) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.168"></a>
-<span class="sourceLineNo">169</span>            } else {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>              future.complete(ret);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          } else {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>              try {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>                zk.close();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>              } catch (InterruptedException e) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>              }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.183"></a>
-<span class="sourceLineNo">184</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              tasks.add(ZKTask.this);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            } else {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.189"></a>
-<span class="sourceLineNo">190</span>            }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>        @Override<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        public void closed(IOException e) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          // fail the request, although it is succeeded actually.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          // response then a failure is always possible.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          future.completeExceptionally(e);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      });<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean needZk() {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return true;<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>    protected abstract void doExec(ZooKeeper zk);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    public final void exec(ZooKeeper zk) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      pendingRequests++;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      doExec(zk);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">157</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.path = path;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.future = future;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      this.operationType = operationType;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      tasks.add(new Task() {<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>        @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          pendingRequests--;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          Code code = Code.get(rc);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          if (code == Code.OK) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            future.complete(ret);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          } else if (code == Code.NONODE) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            if (errorIfNoNode) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            } else {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              future.complete(ret);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                zk.close();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              } catch (InterruptedException e) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>              tasks.add(ZKTask.this);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>            } else {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.193"></a>
+<span class="sourceLineNo">194</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>              future.completeExceptionally(KeeperException.create(code, path));<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><a name="line.199"></a>
+<span class="sourceLineNo">200</span>        @Override<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        public void closed(IOException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          // fail the request, although it is succeeded actually.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.206"></a>
+<span class="sourceLineNo">207</span>          // response then a failure is always possible.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          future.completeExceptionally(e);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      });<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    @Override<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public boolean needZk() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return true;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    protected abstract void doExec(ZooKeeper zk);<a name="line.218"></a>
 <span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (retries &gt;= maxRetries) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      retries++;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return true;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    public void connectFailed(IOException e) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          connectString, operationType, path, retries, e);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        tasks.add(this);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          connectString, operationType, path, retries, e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        future.completeExceptionally(e);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    @Override<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    public void closed(IOException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      future.completeExceptionally(e);<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">220</span>    @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    public final void exec(ZooKeeper zk) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      pendingRequests++;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      doExec(zk);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (retries &gt;= maxRetries) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        return false;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      retries++;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return true;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    @Override<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    public void connectFailed(IOException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          connectString, operationType, path, retries, e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        tasks.add(this);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      } else {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          connectString, operationType, path, retries, e);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        future.completeExceptionally(e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    future.completeExceptionally(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return future;<a name="line.251"></a>
+<span class="sourceLineNo">248</span>    @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    public void closed(IOException e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      future.completeExceptionally(e);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
 <span class="sourceLineNo">252</span>  }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    if (closed.get()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return failed(new IOException("Client already closed"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>      @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      protected void doExec(ZooKeeper zk) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        zk.getData(path, false,<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    });<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return future;<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>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    if (closed.get()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return failed(new IOException("Client already closed"));<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      @Override<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      protected void doExec(ZooKeeper zk) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    });<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return future;<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>  private void closeZk() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    if (zookeeper != null) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        zookeeper.close();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      zookeeper = null;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private ZooKeeper getZk() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // may be closed when session expired<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return zookeeper;<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>  private void run() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    for (;;) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      Task task;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      } catch (InterruptedException e) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (task == CLOSE) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        break;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (task == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        if (pendingRequests == 0) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            getId(), connectString, keepAliveTimeMs);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          closeZk();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        continue;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      if (!task.needZk()) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        task.exec(null);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      } else {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        ZooKeeper zk;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        try {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          zk = getZk();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        } catch (IOException e) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          task.connectFailed(e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          continue;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        task.exec(zk);<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>    closeZk();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    IOException error = new IOException("Client already closed");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    tasks.clear();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void close() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    if (closed.compareAndSet(false, true)) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      tasks.add(CLOSE);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @VisibleForTesting<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public String getConnectString() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return connectString;<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">254</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    future.completeExceptionally(e);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      protected void doExec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.getData(path, false,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    });<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return future;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    if (closed.get()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      return failed(new IOException("Client already closed"));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>      @Override<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      protected void doExec(ZooKeeper zk) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<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 future;<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>  private void closeZk() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    if (zookeeper != null) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      try {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        zookeeper.close();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } catch (InterruptedException e) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      zookeeper = null;<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>  private ZooKeeper getZk() throws IOException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // may be closed when session expired<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return zookeeper;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void run() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    for (;;) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      Task task;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      } catch (InterruptedException e) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        continue;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      if (task == CLOSE) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (task == null) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        if (pendingRequests == 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            getId(), connectString, keepAliveTimeMs);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        continue;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      if (!task.needZk()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        task.exec(null);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        ZooKeeper zk;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          zk = getZk();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          task.connectFailed(e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          continue;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        task.exec(zk);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    closeZk();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    IOException error = new IOException("Client already closed");<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    tasks.clear();<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>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void close() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (closed.compareAndSet(false, true)) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      tasks.add(CLOSE);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @VisibleForTesting<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public String getConnectString() {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return connectString;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>}<a name="line.359"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/overview-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-summary.html b/devapidocs/overview-summary.html
index 6993523..ef3e619 100644
--- a/devapidocs/overview-summary.html
+++ b/devapidocs/overview-summary.html
@@ -354,204 +354,208 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/metrics/package-summary.html">org.apache.hadoop.hbase.metrics</a></td>
 <td class="colLast">
 <div class="block">Metrics API for HBase.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/metrics/impl/package-summary.html">org.apache.hadoop.hbase.metrics.impl</a></td>
 <td class="colLast">
 <div class="block">Implementation of the HBase Metrics framework.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/mob/package-summary.html">org.apache.hadoop.hbase.mob</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/mob/compactions/package-summary.html">org.apache.hadoop.hbase.mob.compactions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/monitoring/package-summary.html">org.apache.hadoop.hbase.monitoring</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/namespace/package-summary.html">org.apache.hadoop.hbase.namespace</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/net/package-summary.html">org.apache.hadoop.hbase.net</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/nio/package-summary.html">org.apache.hadoop.hbase.nio</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure/package-summary.html">org.apache.hadoop.hbase.procedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure/flush/package-summary.html">org.apache.hadoop.hbase.procedure.flush</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure2/package-summary.html">org.apache.hadoop.hbase.procedure2</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure2/store/package-summary.html">org.apache.hadoop.hbase.procedure2.store</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure2/store/wal/package-summary.html">org.apache.hadoop.hbase.procedure2.store.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/procedure2/util/package-summary.html">org.apache.hadoop.hbase.procedure2.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/quotas/package-summary.html">org.apache.hadoop.hbase.quotas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/quotas/policies/package-summary.html">org.apache.hadoop.hbase.quotas.policies</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/package-summary.html">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/compactions/package-summary.html">org.apache.hadoop.hbase.regionserver.compactions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/handler/package-summary.html">org.apache.hadoop.hbase.regionserver.handler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/querymatcher/package-summary.html">org.apache.hadoop.hbase.regionserver.querymatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/snapshot/package-summary.html">org.apache.hadoop.hbase.regionserver.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/throttle/package-summary.html">org.apache.hadoop.hbase.regionserver.throttle</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/regionserver/wal/package-summary.html">org.apache.hadoop.hbase.regionserver.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/replication/package-summary.html">org.apache.hadoop.hbase.replication</a></td>
 <td class="colLast">
 <div class="block">Multi Cluster Replication</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/replication/master/package-summary.html">org.apache.hadoop.hbase.replication.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/replication/regionserver/package-summary.html">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/package-summary.html">org.apache.hadoop.hbase.rest</a></td>
 <td class="colLast">
 <div class="block">HBase REST</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/client/package-summary.html">org.apache.hadoop.hbase.rest.client</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/filter/package-summary.html">org.apache.hadoop.hbase.rest.filter</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/model/package-summary.html">org.apache.hadoop.hbase.rest.model</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/provider/package-summary.html">org.apache.hadoop.hbase.rest.provider</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/provider/consumer/package-summary.html">org.apache.hadoop.hbase.rest.provider.consumer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rest/provider/producer/package-summary.html">org.apache.hadoop.hbase.rest.provider.producer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/rsgroup/package-summary.html">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/security/package-summary.html">org.apache.hadoop.hbase.security</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/security/access/package-summary.html">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/security/token/package-summary.html">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/security/visibility/package-summary.html">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/security/visibility/expression/package-summary.html">org.apache.hadoop.hbase.security.visibility.expression</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/snapshot/package-summary.html">org.apache.hadoop.hbase.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/thrift/package-summary.html">org.apache.hadoop.hbase.thrift</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/thrift2/package-summary.html">org.apache.hadoop.hbase.thrift2</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/tmpl/regionserver/package-summary.html">org.apache.hadoop.hbase.tmpl.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/tool/package-summary.html">org.apache.hadoop.hbase.tool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/trace/package-summary.html">org.apache.hadoop.hbase.trace</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/types/package-summary.html">org.apache.hadoop.hbase.types</a></td>
 <td class="colLast">
 <div class="block">
@@ -559,43 +563,43 @@ service.</div>
  extensible data type API.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/util/package-summary.html">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/util/compaction/package-summary.html">org.apache.hadoop.hbase.util.compaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/util/hbck/package-summary.html">org.apache.hadoop.hbase.util.hbck</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/wal/package-summary.html">org.apache.hadoop.hbase.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/hbase/zookeeper/package-summary.html">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/metrics2/package-summary.html">org.apache.hadoop.metrics2</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/metrics2/impl/package-summary.html">org.apache.hadoop.metrics2.impl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hadoop/metrics2/lib/package-summary.html">org.apache.hadoop.metrics2.lib</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hadoop/metrics2/util/package-summary.html">org.apache.hadoop.metrics2.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="org/apache/hbase/archetypes/exemplars/client/package-summary.html">org.apache.hbase.archetypes.exemplars.client</a></td>
 <td class="colLast">
 <div class="block">This package provides fully-functional exemplar Java code demonstrating
@@ -603,7 +607,7 @@ service.</div>
  archetype with hbase-client dependency.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="org/apache/hbase/archetypes/exemplars/shaded_client/package-summary.html">org.apache.hbase.archetypes.exemplars.shaded_client</a></td>
 <td class="colLast">
 <div class="block">This package provides fully-functional exemplar Java code demonstrating

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/overview-tree.html b/devapidocs/overview-tree.html
index 481d706..9c4a44f 100644
--- a/devapidocs/overview-tree.html
+++ b/devapidocs/overview-tree.html
@@ -131,6 +131,7 @@
 <li><a href="org/apache/hadoop/hbase/master/procedure/package-tree.html">org.apache.hadoop.hbase.master.procedure</a>, </li>
 <li><a href="org/apache/hadoop/hbase/master/replication/package-tree.html">org.apache.hadoop.hbase.master.replication</a>, </li>
 <li><a href="org/apache/hadoop/hbase/master/snapshot/package-tree.html">org.apache.hadoop.hbase.master.snapshot</a>, </li>
+<li><a href="org/apache/hadoop/hbase/master/zksyncer/package-tree.html">org.apache.hadoop.hbase.master.zksyncer</a>, </li>
 <li><a href="org/apache/hadoop/hbase/metrics/package-tree.html">org.apache.hadoop.hbase.metrics</a>, </li>
 <li><a href="org/apache/hadoop/hbase/metrics/impl/package-tree.html">org.apache.hadoop.hbase.metrics.impl</a>, </li>
 <li><a href="org/apache/hadoop/hbase/mob/package-tree.html">org.apache.hadoop.hbase.mob</a>, </li>
@@ -3698,6 +3699,7 @@
 <li type="circle">org.apache.hadoop.hbase.ipc.<a href="org/apache/hadoop/hbase/ipc/BlockingRpcConnection.CallSender.html" title="class in org.apache.hadoop.hbase.ipc"><span class="typeNameLink">BlockingRpcConnection.CallSender</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/BucketCache.StatisticsThread.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket"><span class="typeNameLink">BucketCache.StatisticsThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/ChunkCreator.MemStoreChunkPool.StatisticsThread.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ChunkCreator.MemStoreChunkPool.StatisticsThread</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer.ClientZkUpdater</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.locking.<a href="org/apache/hadoop/hbase/client/locking/EntityLock.LockHeartbeatWorker.html" title="class in org.apache.hadoop.hbase.client.locking"><span class="typeNameLink">EntityLock.LockHeartbeatWorker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/JVMClusterUtil.MasterThread.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">JVMClusterUtil.MasterThread</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/JVMClusterUtil.RegionServerThread.html" title="class in org.apache.hadoop.hbase.util"><span class="typeNameLink">JVMClusterUtil.RegionServerThread</span></a></li>
@@ -4153,6 +4155,12 @@
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKListener</span></a>
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">ActiveMasterManager</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MasterAddressSyncer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MetaLocationSyncer</span></a></li>
+</ul>
+</li>
 <li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/DeletionListener.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">DeletionListener</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">DrainingServerTracker</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/HBaseReplicationEndpoint.PeerRegionServerListener.html" title="class in org.apache.hadoop.hbase.replication"><span class="typeNameLink">HBaseReplicationEndpoint.PeerRegionServerListener</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/package-list
----------------------------------------------------------------------
diff --git a/devapidocs/package-list b/devapidocs/package-list
index 57e7cdf..0346d30 100644
--- a/devapidocs/package-list
+++ b/devapidocs/package-list
@@ -56,6 +56,7 @@ org.apache.hadoop.hbase.master.normalizer
 org.apache.hadoop.hbase.master.procedure
 org.apache.hadoop.hbase.master.replication
 org.apache.hadoop.hbase.master.snapshot
+org.apache.hadoop.hbase.master.zksyncer
 org.apache.hadoop.hbase.metrics
 org.apache.hadoop.hbase.metrics.impl
 org.apache.hadoop.hbase.mob


[23/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 ffa3b9b..0d1d101 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/Version.html
@@ -16,11 +16,11 @@
 <span class="sourceLineNo">008</span>@InterfaceAudience.Private<a name="line.8"></a>
 <span class="sourceLineNo">009</span>public class Version {<a name="line.9"></a>
 <span class="sourceLineNo">010</span>  public static final String version = "3.0.0-SNAPSHOT";<a name="line.10"></a>
-<span class="sourceLineNo">011</span>  public static final String revision = "3b6199a27a944f9f05ca6512c59766ed0f590f48";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "d8b550fabcacf3050583b514c4081adf5d087d65";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Wed Mar 28 14:41:56 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Thu Mar 29 14:41:13 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 = "20863c5ee3226f9f8eadc881825e7019";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "ec0cf2f1817421bacb7059f6c5a503b2";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 


[33/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
index 170f400..66147c8 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -191,7 +191,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#catalogJanitorChore">catalogJanitorChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#coprocessorServiceHandlers">coprocessorServiceHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#cpHost">cpHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#loadBalancerTracker">loadBalancerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#MASTER">MASTER</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#metricsMaster">metricsMaster</a>, <a href="../../../../../org/apach
 e/hadoop/hbase/master/HMaster.html#regionServerTracker">regionServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#rsFatals">rsFatals</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serviceStarted">serviceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#snapshotManager">snapshotManager</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#catalogJanitorChore">catalogJanitorChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#coprocessorServiceHandlers">coprocessorServiceHandlers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#cpHost">cpHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#loadBalancerTracker">loadBalancerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#MASTER">MASTER</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterAddressSyncer">masterAddressSyncer</a>, <a href="../../../../
 ../org/apache/hadoop/hbase/master/HMaster.html#metaLocationSyncer">metaLocationSyncer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#metricsMaster">metricsMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#regionServerTracker">regionServerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#rsFatals">rsFatals</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#serviceStarted">serviceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#snapshotManager">snapshotManager</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
@@ -254,7 +254,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/ha
 doop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDepl
 oyTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionSe
 rver.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regi
 onserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/ha
 doop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#post
 OpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSize
 Store-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/region
 server/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 47a4248..f5bd373 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -346,10 +346,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.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/RegionState.State.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">RegionState.State</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.ResubmitDirective.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.ResubmitDirective</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MasterRpcServices.BalanceSwitchMode.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MasterRpcServices.BalanceSwitchMode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.TerminationStatus.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">SplitLogManager.TerminationStatus</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMasterSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.master"><span class="typeNameLink">MetricsMasterSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
index 550d779..a7119b7 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/procedure/package-tree.html
@@ -208,9 +208,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.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/ServerProcedureInterface.ServerOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">ServerProcedureInterface.ServerOperationType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/TableProcedureInterface.TableOperationType.html" title="enum in org.apache.hadoop.hbase.master.procedure"><span class="typeNameLink">TableProcedureInterface.TableOperationType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.procedure.<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-summary.html b/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-summary.html
index 7b8c7fb..db608e3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-summary.html
@@ -44,7 +44,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-summary.html">Prev&nbsp;Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-summary.html">Next&nbsp;Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/snapshot/package-summary.html" target="_top">Frames</a></li>
@@ -173,7 +173,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-summary.html">Prev&nbsp;Package</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-summary.html">Next&nbsp;Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/snapshot/package-summary.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-tree.html
index 1c3abaa..68809ca 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/snapshot/package-tree.html
@@ -44,7 +44,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-tree.html">Prev</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-tree.html">Next</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/snapshot/package-tree.html" target="_top">Frames</a></li>
@@ -151,7 +151,7 @@
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../../org/apache/hadoop/hbase/master/replication/package-tree.html">Prev</a></li>
-<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-tree.html">Next</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/snapshot/package-tree.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
new file mode 100644
index 0000000..5615a3c
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html
@@ -0,0 +1,372 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ClientZKSyncer.ClientZkUpdater (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ClientZKSyncer.ClientZkUpdater (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientZKSyncer.ClientZkUpdater.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.ClientZkUpdater.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.zksyncer</div>
+<h2 title="Class ClientZKSyncer.ClientZkUpdater" class="title">Class ClientZKSyncer.ClientZkUpdater</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">java.lang.Thread</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer.ClientZkUpdater</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>All Implemented Interfaces:</dt>
+<dd><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></dd>
+</dl>
+<hr>
+<br>
+<pre>class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.214">ClientZKSyncer.ClientZkUpdater</a>
+extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></pre>
+<div class="block">Thread to synchronize znode data to client ZK cluster</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.State.html?is-external=true" title="class or interface in java.lang">Thread.State</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#queue">queue</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>(package 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/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#znode">znode</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MAX_PRIORITY" title="class or interface in java.lang">MAX_PRIORITY</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#MIN_PRIORITY" title="class or interface in java.lang">MIN_PRIORITY</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#NORM_PRIORITY" title="class or interface in java.lang">NORM_PRIORITY</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#ClientZkUpdater-java.lang.String-java.util.concurrent.BlockingQueue-">ClientZkUpdater</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;znode,
+               <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt;&nbsp;queue)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#run--">run</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Thread">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#activeCount--" title="class or interface in java.lang">activeCount</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#checkAccess--" title="class or interface in java.lang">checkAccess</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#countStackFrames--" title="class or interface in java.lang">countStackFrames</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#currentThread--" title="class or interface in java.lang">currentThread</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#destroy--" title="class or interface in java.lang">destroy</a>, <a href="https://docs.ora
 cle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#dumpStack--" title="class or interface in java.lang">dumpStack</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#enumerate-java.lang.Thread:A-" title="class or interface in java.lang">enumerate</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getAllStackTraces--" title="class or interface in java.lang">getAllStackTraces</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getContextClassLoader--" title="class or interface in java.lang">getContextClassLoader</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getDefaultUncaughtExceptionHandler--" title="class or interface in java.lang">getDefaultUncaughtExceptionHandler</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getId--" title="class or interface
  in java.lang">getId</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getName--" title="class or interface in java.lang">getName</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getPriority--" title="class or interface in java.lang">getPriority</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getStackTrace--" title="class or interface in java.lang">getStackTrace</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getState--" title="class or interface in java.lang">getState</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getThreadGroup--" title="class or interface in java.lang">getThreadGroup</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#getUncaughtExceptionHandler--" title="class or interface in java.lang">getU
 ncaughtExceptionHandler</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#holdsLock-java.lang.Object-" title="class or interface in java.lang">holdsLock</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupt--" title="class or interface in java.lang">interrupt</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#interrupted--" title="class or interface in java.lang">interrupted</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isAlive--" title="class or interface in java.lang">isAlive</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isDaemon--" title="class or interface in java.lang">isDaemon</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#isInterrupted--" title="class or interface in java.lang">isInterrupted</a>
 , <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join--" title="class or interface in java.lang">join</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-" title="class or interface in java.lang">join</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#join-long-int-" title="class or interface in java.lang">join</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#resume--" title="class or interface in java.lang">resume</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setContextClassLoader-java.lang.ClassLoader-" title="class or interface in java.lang">setContextClassLoader</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDaemon-boolean-" title="class or interface in java.lang">setDaemon</a>, <a href="https://do
 cs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setDefaultUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-" title="class or interface in java.lang">setDefaultUncaughtExceptionHandler</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setName-java.lang.String-" title="class or interface in java.lang">setName</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setPriority-int-" title="class or interface in java.lang">setPriority</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#setUncaughtExceptionHandler-java.lang.Thread.UncaughtExceptionHandler-" title="class or interface in java.lang">setUncaughtExceptionHandler</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#sleep-long-" title="class or interface in java.lang">sleep</a>, <a href="https://docs.oracle.com/javase/8/d
 ocs/api/java/lang/Thread.html?is-external=true#sleep-long-int-" title="class or interface in java.lang">sleep</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#start--" title="class or interface in java.lang">start</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop--" title="class or interface in java.lang">stop</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#stop-java.lang.Throwable-" title="class or interface in java.lang">stop</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#suspend--" title="class or interface in java.lang">suspend</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#yield--" title="c
 lass or interface in java.lang">yield</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/doc
 s/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="znode">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>znode</h4>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#line.215">znode</a></pre>
+</li>
+</ul>
+<a name="queue">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>queue</h4>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#line.216">queue</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ClientZkUpdater-java.lang.String-java.util.concurrent.BlockingQueue-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ClientZkUpdater</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#line.218">ClientZkUpdater</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;znode,
+                       <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt;&nbsp;queue)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="run--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>run</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html#line.225">run</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang">Thread</a></code></dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientZKSyncer.ClientZkUpdater.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.ClientZkUpdater.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.java.lang.Thread">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>


[32/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
new file mode 100644
index 0000000..9c27524
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html
@@ -0,0 +1,599 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>ClientZKSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="ClientZKSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":6,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":6,"i9":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],4:["t3","Abstract Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientZKSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.zksyncer</div>
+<h2 title="Class ClientZKSyncer" class="title">Class ClientZKSyncer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper.ZKListener</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<dl>
+<dt>Direct Known Subclasses:</dt>
+<dd><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></dd>
+</dl>
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public abstract class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.47">ClientZKSyncer</a>
+extends <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></pre>
+<div class="block">Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if
+ changed
+ <p/>
+ The target znode(s) is given through <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--"><code>getNodesToWatch()</code></a> method</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></span></code>
+<div class="block">Thread to synchronize znode data to client ZK cluster</div>
+</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#clientZkWatcher">clientZkWatcher</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <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/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt;&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#queues">queues</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#server">server</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#watcher">watcher</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#ClientZKSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">ClientZKSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+              <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+              <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t3" class="tableTab"><span><a href="javascript:show(4);">Abstract Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>(package private) abstract <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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--">getNodesToWatch</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/master/zksyncer/ClientZKSyncer.html#nodeCreated-java.lang.String-">nodeCreated</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;path)</code>
+<div class="block">Called when a new node has been created.</div>
+</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/master/zksyncer/ClientZKSyncer.html#nodeDataChanged-java.lang.String-">nodeDataChanged</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;path)</code>
+<div class="block">Called when an existing node has changed data.</div>
+</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/master/zksyncer/ClientZKSyncer.html#nodeDeleted-java.lang.String-">nodeDeleted</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;path)</code>
+<div class="block">Called when a node has been deleted</div>
+</td>
+</tr>
+<tr id="i4" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#reconnectAfterExpiration--">reconnectAfterExpiration</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#setDataForClientZkUntilSuccess-java.lang.String-byte:A-">setDataForClientZkUntilSuccess</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;node,
+                              byte[]&nbsp;data)</code>
+<div class="block">Set data for client ZK and retry until succeed.</div>
+</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/master/zksyncer/ClientZKSyncer.html#start--">start</a></span>()</code>
+<div class="block">Starts the syncer</div>
+</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/master/zksyncer/ClientZKSyncer.html#upsertQueue-java.lang.String-byte:A-">upsertQueue</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;node,
+           byte[]&nbsp;data)</code>
+<div class="block">Update the value of the single element in queue if any, or else insert.</div>
+</td>
+</tr>
+<tr id="i8" class="altColor">
+<td class="colFirst"><code>(package private) abstract boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">validate</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;path)</code>
+<div class="block">Validate whether a znode path is watched by us</div>
+</td>
+</tr>
+<tr id="i9" class="rowColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#watchAndCheckExists-java.lang.String-">watchAndCheckExists</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;node)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#getWatcher--">getWatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeChildrenChanged-java.lang.String-">nodeChildrenChanged</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <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>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.48">LOG</a></pre>
+</li>
+</ul>
+<a name="server">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>server</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.49">server</a></pre>
+</li>
+</ul>
+<a name="clientZkWatcher">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>clientZkWatcher</h4>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.50">clientZkWatcher</a></pre>
+</li>
+</ul>
+<a name="queues">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>queues</h4>
+<pre>private final&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="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/concurrent/BlockingQueue.html?is-external=true" title="class or interface in java.util.concurrent">BlockingQueue</a>&lt;byte[]&gt;&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.53">queues</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="ClientZKSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>ClientZKSyncer</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.55">ClientZKSyncer</a>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                      <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                      <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="start--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>start</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.66">start</a>()
+           throws org.apache.zookeeper.KeeperException</pre>
+<div class="block">Starts the syncer</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code>org.apache.zookeeper.KeeperException</code> - if error occurs when trying to create base nodes on client ZK</dd>
+</dl>
+</li>
+</ul>
+<a name="watchAndCheckExists-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>watchAndCheckExists</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.85">watchAndCheckExists</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;node)</pre>
+</li>
+</ul>
+<a name="upsertQueue-java.lang.String-byte:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>upsertQueue</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.113">upsertQueue</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;node,
+                         byte[]&nbsp;data)</pre>
+<div class="block">Update the value of the single element in queue if any, or else insert.
+ <p/>
+ We only need to synchronize the latest znode value to client ZK rather than synchronize each
+ time</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>data</code> - the data to write to queue</dd>
+</dl>
+</li>
+</ul>
+<a name="setDataForClientZkUntilSuccess-java.lang.String-byte:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>setDataForClientZkUntilSuccess</h4>
+<pre>private final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.128">setDataForClientZkUntilSuccess</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;node,
+                                                  byte[]&nbsp;data)
+                                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<div class="block">Set data for client ZK and retry until succeed. Be very careful to prevent dead loop when
+ modifying this method</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>node</code> - the znode to set on client ZK</dd>
+<dd><code>data</code> - the data to set to client ZK</dd>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code> - if the thread is interrupted during process</dd>
+</dl>
+</li>
+</ul>
+<a name="reconnectAfterExpiration--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>reconnectAfterExpiration</h4>
+<pre>private final&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.157">reconnectAfterExpiration</a>()
+                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="nodeCreated-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nodeCreated</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.167">nodeCreated</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;path)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeCreated-java.lang.String-">ZKListener</a></code></span></div>
+<div class="block">Called when a new node has been created.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeCreated-java.lang.String-">nodeCreated</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - full path of the new node</dd>
+</dl>
+</li>
+</ul>
+<a name="nodeDataChanged-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nodeDataChanged</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.180">nodeDataChanged</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;path)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDataChanged-java.lang.String-">ZKListener</a></code></span></div>
+<div class="block">Called when an existing node has changed data.</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDataChanged-java.lang.String-">nodeDataChanged</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - full path of the updated node</dd>
+</dl>
+</li>
+</ul>
+<a name="nodeDeleted-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>nodeDeleted</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.187">nodeDeleted</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;path)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDeleted-java.lang.String-">ZKListener</a></code></span></div>
+<div class="block">Called when a node has been deleted</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeDeleted-java.lang.String-">nodeDeleted</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - full path of the deleted node</dd>
+</dl>
+</li>
+</ul>
+<a name="validate-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>validate</h4>
+<pre>abstract&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#line.204">validate</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;path)</pre>
+<div class="block">Validate whether a znode path is watched by us</div>
+<dl>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - the path to validate</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the znode is watched by us</dd>
+</dl>
+</li>
+</ul>
+<a name="getNodesToWatch--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNodesToWatch</h4>
+<pre>abstract&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="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/master/zksyncer/ClientZKSyncer.html#line.209">getNodesToWatch</a>()</pre>
+<dl>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the znode(s) to watch</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/ClientZKSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev&nbsp;Class</li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
new file mode 100644
index 0000000..81f502d
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html
@@ -0,0 +1,392 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MasterAddressSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="MasterAddressSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/MasterAddressSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" target="_top">Frames</a></li>
+<li><a href="MasterAddressSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.zksyncer</div>
+<h2 title="Class MasterAddressSyncer" class="title">Class MasterAddressSyncer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper.ZKListener</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#line.33">MasterAddressSyncer</a>
+extends <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></pre>
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="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/master/zksyncer/MasterAddressSyncer.html#masterAddressZNode">masterAddressZNode</a></span></code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#watcher">watcher</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#MasterAddressSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MasterAddressSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                   <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                   <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>(package private) <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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#getNodesToWatch--">getNodesToWatch</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#validate-java.lang.String-">validate</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;path)</code>
+<div class="block">Validate whether a znode path is watched by us</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeCreated-java.lang.String-">nodeCreated</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDataChanged-java.lang.String-">nodeDataChanged</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDeleted-java.lang.String-">nodeDeleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#start--">start</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#getWatcher--">getWatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeChildrenChanged-java.lang.String-">nodeChildrenChanged</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <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>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="masterAddressZNode">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>masterAddressZNode</h4>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#line.34">masterAddressZNode</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="MasterAddressSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>MasterAddressSyncer</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#line.36">MasterAddressSyncer</a>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                           <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                           <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="validate-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>validate</h4>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#line.42">validate</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;path)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">ClientZKSyncer</a></code></span></div>
+<div class="block">Validate whether a znode path is watched by us</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">validate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - the path to validate</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the znode is watched by us</dd>
+</dl>
+</li>
+</ul>
+<a name="getNodesToWatch--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNodesToWatch</h4>
+<pre><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;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#line.47">getNodesToWatch</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--">getNodesToWatch</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the znode(s) to watch</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/MasterAddressSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" target="_top">Frames</a></li>
+<li><a href="MasterAddressSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
new file mode 100644
index 0000000..7a9ae0e
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html
@@ -0,0 +1,364 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>MetaLocationSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="MetaLocationSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":10,"i1":10};
+var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
+var altColor = "altColor";
+var rowColor = "rowColor";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/MetaLocationSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" target="_top">Frames</a></li>
+<li><a href="MetaLocationSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.master.zksyncer</div>
+<h2 title="Class MetaLocationSyncer" class="title">Class MetaLocationSyncer</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper.ZKListener</a></li>
+<li>
+<ul class="inheritance">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>@InterfaceAudience.Private
+public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#line.32">MetaLocationSyncer</a>
+extends <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></pre>
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer.ClientZkUpdater</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#watcher">watcher</a></code></li>
+</ul>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#MetaLocationSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MetaLocationSyncer</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                  <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                  <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>(package private) <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;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#getNodesToWatch--">getNodesToWatch</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>(package private) boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#validate-java.lang.String-">validate</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;path)</code>
+<div class="block">Validate whether a znode path is watched by us</div>
+</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeCreated-java.lang.String-">nodeCreated</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDataChanged-java.lang.String-">nodeDataChanged</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#nodeDeleted-java.lang.String-">nodeDeleted</a>, <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#start--">start</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKListener</a></h3>
+<code><a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#getWatcher--">getWatcher</a>, <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html#nodeChildrenChanged-java.lang.String-">nodeChildrenChanged</a></code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <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>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="MetaLocationSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>MetaLocationSyncer</h4>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#line.33">MetaLocationSyncer</a>(<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                          <a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                          <a href="../../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="validate-java.lang.String-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>validate</h4>
+<pre>boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#line.38">validate</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;path)</pre>
+<div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">ClientZKSyncer</a></code></span></div>
+<div class="block">Validate whether a znode path is watched by us</div>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#validate-java.lang.String-">validate</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></code></dd>
+<dt><span class="paramLabel">Parameters:</span></dt>
+<dd><code>path</code> - the path to validate</dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>true if the znode is watched by us</dd>
+</dl>
+</li>
+</ul>
+<a name="getNodesToWatch--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getNodesToWatch</h4>
+<pre><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;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#line.43">getNodesToWatch</a>()</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
+<dd><code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--">getNodesToWatch</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></code></dd>
+<dt><span class="returnLabel">Returns:</span></dt>
+<dd>the znode(s) to watch</dd>
+</dl>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/MetaLocationSyncer.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li>Next&nbsp;Class</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" target="_top">Frames</a></li>
+<li><a href="MetaLocationSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li><a href="#nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.zookeeper.ZKListener">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li>Field&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

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


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

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


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

Branch: refs/heads/asf-site
Commit: 2a4c7d894c722416ab389ada25f45a6efe517009
Parents: 517ab95
Author: jenkins <bu...@apache.org>
Authored: Thu Mar 29 14:47:31 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Thu Mar 29 14:47:31 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |    4 +-
 apache_hbase_reference_guide.pdf                |    4 +-
 apidocs/constant-values.html                    |   94 +-
 apidocs/index-all.html                          |   24 +-
 apidocs/org/apache/hadoop/hbase/HConstants.html |  728 +-
 .../org/apache/hadoop/hbase/HConstants.html     | 2211 +++---
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    2 +-
 book.html                                       |    2 +-
 bulk-loads.html                                 |    4 +-
 checkstyle-aggregate.html                       |  600 +-
 checkstyle.rss                                  |   58 +-
 coc.html                                        |    4 +-
 dependencies.html                               |    4 +-
 dependency-convergence.html                     |    4 +-
 dependency-info.html                            |    4 +-
 dependency-management.html                      |    4 +-
 devapidocs/allclasses-frame.html                |    3 +
 devapidocs/allclasses-noframe.html              |    3 +
 devapidocs/constant-values.html                 |  100 +-
 devapidocs/index-all.html                       |  123 +-
 .../org/apache/hadoop/hbase/HConstants.html     |  730 +-
 .../hadoop/hbase/backup/package-tree.html       |    4 +-
 .../hadoop/hbase/class-use/Abortable.html       |    9 +
 .../apache/hadoop/hbase/class-use/Server.html   |   49 +-
 .../class-use/ZooKeeperConnectionException.html |    9 +
 .../hadoop/hbase/client/package-tree.html       |   26 +-
 .../hadoop/hbase/filter/package-tree.html       |   10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |    6 +-
 .../apache/hadoop/hbase/ipc/package-tree.html   |    4 +-
 .../hadoop/hbase/mapreduce/package-tree.html    |    2 +-
 .../master/HMaster.InitializationMonitor.html   |   20 +-
 .../master/HMaster.MasterStoppedException.html  |    4 +-
 .../hbase/master/HMaster.RedirectServlet.html   |   12 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |  512 +-
 .../master/HMasterCommandLine.LocalHMaster.html |    4 +-
 .../hadoop/hbase/master/package-tree.html       |    4 +-
 .../hbase/master/procedure/package-tree.html    |    4 +-
 .../hbase/master/snapshot/package-summary.html  |    4 +-
 .../hbase/master/snapshot/package-tree.html     |    4 +-
 .../ClientZKSyncer.ClientZkUpdater.html         |  372 +
 .../hbase/master/zksyncer/ClientZKSyncer.html   |  599 ++
 .../master/zksyncer/MasterAddressSyncer.html    |  392 +
 .../master/zksyncer/MetaLocationSyncer.html     |  364 +
 .../ClientZKSyncer.ClientZkUpdater.html         |  125 +
 .../zksyncer/class-use/ClientZKSyncer.html      |  175 +
 .../zksyncer/class-use/MasterAddressSyncer.html |  165 +
 .../zksyncer/class-use/MetaLocationSyncer.html  |  165 +
 .../hbase/master/zksyncer/package-frame.html    |   22 +
 .../hbase/master/zksyncer/package-summary.html  |  162 +
 .../hbase/master/zksyncer/package-tree.html     |  152 +
 .../hbase/master/zksyncer/package-use.html      |  191 +
 .../hadoop/hbase/metrics/package-summary.html   |    4 +-
 .../hadoop/hbase/metrics/package-tree.html      |    4 +-
 .../hadoop/hbase/monitoring/package-tree.html   |    2 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   18 +-
 .../org/apache/hadoop/hbase/package-use.html    |   96 +-
 .../hadoop/hbase/procedure2/package-tree.html   |    4 +-
 .../hadoop/hbase/quotas/package-tree.html       |    6 +-
 .../HRegionServer.CompactionChecker.html        |   14 +-
 .../HRegionServer.MovedRegionInfo.html          |   16 +-
 .../HRegionServer.MovedRegionsCleaner.html      |   16 +-
 .../HRegionServer.PeriodicMemStoreFlusher.html  |   12 +-
 .../hbase/regionserver/HRegionServer.html       |  640 +-
 .../hadoop/hbase/regionserver/package-tree.html |   18 +-
 .../regionserver/querymatcher/package-tree.html |    2 +-
 .../regionserver/ReplicationSink.html           |   26 +-
 .../replication/regionserver/package-tree.html  |    2 +-
 .../hadoop/hbase/rest/model/package-tree.html   |    2 +-
 .../hbase/security/access/package-tree.html     |    2 +-
 .../hadoop/hbase/security/package-tree.html     |    2 +-
 .../hadoop/hbase/thrift/package-tree.html       |    2 +-
 .../apache/hadoop/hbase/util/package-tree.html  |    6 +-
 .../zookeeper/ReadOnlyZKClient.ZKTask.html      |   26 +-
 .../hbase/zookeeper/ReadOnlyZKClient.html       |   16 +-
 .../hbase/zookeeper/ZKConfig.ZKClusterKey.html  |   16 +-
 .../apache/hadoop/hbase/zookeeper/ZKConfig.html |   68 +-
 .../hadoop/hbase/zookeeper/ZKListener.html      |    2 +-
 .../hadoop/hbase/zookeeper/ZKWatcher.html       |   99 +-
 .../hbase/zookeeper/class-use/ZKListener.html   |   51 +-
 .../hbase/zookeeper/class-use/ZKWatcher.html    |   67 +-
 .../hadoop/hbase/zookeeper/package-use.html     |   48 +-
 devapidocs/overview-frame.html                  |    1 +
 devapidocs/overview-summary.html                |  118 +-
 devapidocs/overview-tree.html                   |    8 +
 devapidocs/package-list                         |    1 +
 .../hbase/HConstants.OperationStatusCode.html   | 2211 +++---
 .../org/apache/hadoop/hbase/HConstants.html     | 2211 +++---
 .../org/apache/hadoop/hbase/Version.html        |    6 +-
 .../master/HMaster.InitializationMonitor.html   | 6787 +++++++++---------
 .../master/HMaster.MasterStoppedException.html  | 6787 +++++++++---------
 .../hbase/master/HMaster.RedirectServlet.html   | 6787 +++++++++---------
 .../org/apache/hadoop/hbase/master/HMaster.html | 6787 +++++++++---------
 .../ClientZKSyncer.ClientZkUpdater.html         |  313 +
 .../hbase/master/zksyncer/ClientZKSyncer.html   |  313 +
 .../master/zksyncer/MasterAddressSyncer.html    |  124 +
 .../master/zksyncer/MetaLocationSyncer.html     |  118 +
 .../HRegionServer.CompactionChecker.html        | 6734 ++++++++---------
 .../HRegionServer.MovedRegionInfo.html          | 6734 ++++++++---------
 .../HRegionServer.MovedRegionsCleaner.html      | 6734 ++++++++---------
 .../HRegionServer.PeriodicMemStoreFlusher.html  | 6734 ++++++++---------
 .../hbase/regionserver/HRegionServer.html       | 6734 ++++++++---------
 .../regionserver/ReplicationSink.html           |  606 +-
 .../hbase/zookeeper/MiniZooKeeperCluster.html   |    2 +-
 .../hbase/zookeeper/ReadOnlyZKClient.Task.html  |  444 +-
 .../zookeeper/ReadOnlyZKClient.ZKTask.html      |  444 +-
 .../hbase/zookeeper/ReadOnlyZKClient.html       |  444 +-
 .../hbase/zookeeper/ZKConfig.ZKClusterKey.html  |  594 +-
 .../apache/hadoop/hbase/zookeeper/ZKConfig.html |  594 +-
 .../hadoop/hbase/zookeeper/ZKServerTool.html    |    2 +-
 .../zookeeper/ZKUtil.JaasConfiguration.html     |    2 +-
 .../hbase/zookeeper/ZKUtil.NodeAndData.html     |    2 +-
 .../ZKUtil.ZKUtilOp.CreateAndFailSilent.html    |    2 +-
 .../ZKUtil.ZKUtilOp.DeleteNodeFailSilent.html   |    2 +-
 .../zookeeper/ZKUtil.ZKUtilOp.SetData.html      |    2 +-
 .../hadoop/hbase/zookeeper/ZKUtil.ZKUtilOp.html |    2 +-
 .../apache/hadoop/hbase/zookeeper/ZKUtil.html   |    2 +-
 .../hadoop/hbase/zookeeper/ZKWatcher.html       | 1021 +--
 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 +-
 testdevapidocs/allclasses-frame.html            |    1 +
 testdevapidocs/allclasses-noframe.html          |    1 +
 testdevapidocs/constant-values.html             |   19 +
 testdevapidocs/index-all.html                   |   46 +
 ...aseCluster.MiniHBaseClusterRegionServer.html |    2 +-
 ...entOperationTimeout.DelayedRegionServer.html |    2 +-
 .../hbase/TestLocalHBaseCluster.MyHMaster.html  |    2 +-
 .../TestLocalHBaseCluster.MyHRegionServer.html  |    2 +-
 ...ovedRegionsCleaner.TestMockRegionServer.html |    2 +-
 .../hadoop/hbase/backup/package-tree.html       |    2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |  244 +-
 .../hbase/class-use/HBaseTestingUtility.html    |  162 +-
 ...rRPCTimeout.RegionServerWithScanTimeout.html |    2 +-
 ...taCache.RegionServerWithFakeRpcServices.html |    2 +-
 .../client/TestScanWithoutFetchingData.html     |    4 +-
 .../client/TestSeparateClientZKCluster.html     |  568 ++
 .../hbase/client/TestServerBusyException.html   |    4 +-
 .../class-use/TestSeparateClientZKCluster.html  |  125 +
 .../hadoop/hbase/client/package-frame.html      |    1 +
 .../hadoop/hbase/client/package-summary.html    |   58 +-
 .../hadoop/hbase/client/package-tree.html       |    1 +
 .../master/TestMasterMetrics.MyMaster.html      |    4 +-
 .../hbase/master/TestMasterNoCluster.html       |   66 +-
 .../TestMetaShutdownHandler.MyRegionServer.html |    2 +-
 .../TestShutdownBackupMaster.MockHMaster.html   |    4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |   10 +-
 .../hadoop/hbase/procedure/package-tree.html    |    8 +-
 .../hbase/regionserver/OOMERegionServer.html    |    2 +-
 ...onInDeadRegionServer.IgnoreYouAreDeadRS.html |    2 +-
 ...Initializing.RegisterAndDieRegionServer.html |    2 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |    2 +-
 ...egionServerReportForDuty.MyRegionServer.html |    2 +-
 ...eartbeatMessages.HeartbeatHRegionServer.html |    2 +-
 ...stShutdownWhileWALBroken.MyRegionServer.html |    2 +-
 .../TestSplitTransactionOnCluster.MyMaster.html |    2 +-
 .../hadoop/hbase/regionserver/package-tree.html |    2 +-
 ...stReplicationProcedureRetry.MockHMaster.html |    2 +-
 ...icationSource.ShutdownDelayRegionServer.html |    2 +-
 .../apache/hadoop/hbase/test/package-tree.html  |    2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |    4 +-
 testdevapidocs/overview-tree.html               |    1 +
 .../client/TestSeparateClientZKCluster.html     |  340 +
 .../hbase/master/TestMasterNoCluster.html       |  569 +-
 181 files changed, 44160 insertions(+), 38181 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index 1134bc4..f11443d 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -591,7 +591,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index ec799a6..c85b85d 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:20180328144700+00'00')
-/CreationDate (D:20180328144700+00'00')
+/ModDate (D:20180329144549+00'00')
+/CreationDate (D:20180329144549+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/apidocs/constant-values.html b/apidocs/constant-values.html
index 18050dd..40e11ba 100644
--- a/apidocs/constant-values.html
+++ b/apidocs/constant-values.html
@@ -577,166 +577,194 @@
 <td class="colLast"><code>"clientPort"</code></td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.property.clientPort"</code></td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.observer.mode"</code></td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_QUORUM">
+<!--   -->
+</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/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></code></td>
+<td class="colLast"><code>"hbase.client.zookeeper.quorum"</code></td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_DISTRIBUTED">
 <!--   -->
 </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/HConstants.html#CLUSTER_DISTRIBUTED">CLUSTER_DISTRIBUTED</a></code></td>
 <td class="colLast"><code>"hbase.cluster.distributed"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_ID_DEFAULT">
 <!--   -->
 </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/HConstants.html#CLUSTER_ID_DEFAULT">CLUSTER_ID_DEFAULT</a></code></td>
 <td class="colLast"><code>"default-cluster"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_ID_FILE_NAME">
 <!--   -->
 </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/HConstants.html#CLUSTER_ID_FILE_NAME">CLUSTER_ID_FILE_NAME</a></code></td>
 <td class="colLast"><code>"hbase.id"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CLUSTER_IS_LOCAL">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#CLUSTER_IS_LOCAL">CLUSTER_IS_LOCAL</a></code></td>
 <td class="colLast"><code>false</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX">
 <!--   -->
 </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/HConstants.html#COMPACTION_KV_MAX">COMPACTION_KV_MAX</a></code></td>
 <td class="colLast"><code>"hbase.hstore.compaction.kv.max"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX_DEFAULT">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#COMPACTION_KV_MAX_DEFAULT">COMPACTION_KV_MAX_DEFAULT</a></code></td>
 <td class="colLast"><code>10</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CONFIGURATION">
 <!--   -->
 </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/HConstants.html#CONFIGURATION">CONFIGURATION</a></code></td>
 <td class="colLast"><code>"CONFIGURATION"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CORRUPT_DIR_NAME">
 <!--   -->
 </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/HConstants.html#CORRUPT_DIR_NAME">CORRUPT_DIR_NAME</a></code></td>
 <td class="colLast"><code>"corrupt"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_INCLUSION_KEY">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_INCLUSION_KEY">CP_HTD_ATTR_INCLUSION_KEY</a></code></td>
 <td class="colLast"><code>"hbase.coprocessor.classloader.included.classes"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></code></td>
 <td class="colLast"><code>"[^=,]+"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">
 <!--   -->
 </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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></code></td>
 <td class="colLast"><code>"[^,]+"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.alternate.key.algorithm"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_CIPHERPROVIDER_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_CIPHERPROVIDER_CONF_KEY">CRYPTO_CIPHERPROVIDER_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.cipherprovider"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEY_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEY_ALGORITHM_CONF_KEY">CRYPTO_KEY_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.key.algorithm"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEYPROVIDER_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEYPROVIDER_CONF_KEY">CRYPTO_KEYPROVIDER_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.keyprovider"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_KEYPROVIDER_PARAMETERS_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_KEYPROVIDER_PARAMETERS_KEY">CRYPTO_KEYPROVIDER_PARAMETERS_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.keyprovider.parameters"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.master.alternate.key.name"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_MASTERKEY_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_MASTERKEY_NAME_CONF_KEY">CRYPTO_MASTERKEY_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.master.key.name"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_WAL_ALGORITHM_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_WAL_ALGORITHM_CONF_KEY">CRYPTO_WAL_ALGORITHM_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.wal.algorithm"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.CRYPTO_WAL_KEY_NAME_CONF_KEY">
 <!--   -->
 </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/HConstants.html#CRYPTO_WAL_KEY_NAME_CONF_KEY">CRYPTO_WAL_KEY_NAME_CONF_KEY</a></code></td>
 <td class="colLast"><code>"hbase.crypto.wal.key.name"</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DATA_FILE_UMASK_KEY">
 <!--   -->
 </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/HConstants.html#DATA_FILE_UMASK_KEY">DATA_FILE_UMASK_KEY</a></code></td>
 <td class="colLast"><code>"hbase.data.umask"</code></td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DAY_IN_SECONDS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#DAY_IN_SECONDS">DAY_IN_SECONDS</a></code></td>
 <td class="colLast"><code>86400</code></td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_BLOCKSIZE">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
 <td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_BLOCKSIZE">DEFAULT_BLOCKSIZE</a></code></td>
 <td class="colLast"><code>65536</code></td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a><code>public&nbsp;static&nbsp;final&nbsp;boolean</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></code></td>
+<td class="colLast"><code>false</code></td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_CLUSTER_DISTRIBUTED">
 <!--   -->
@@ -1123,25 +1151,25 @@
 <td class="colLast"><code>90000</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT">
 <!--   -->
-</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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></code></td>
-<td class="colLast"><code>"/hbase"</code></td>
+</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></code></td>
+<td class="colLast"><code>2181</code></td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></code></td>
-<td class="colLast"><code>2181</code></td>
+<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></code></td>
+<td class="colLast"><code>300</code></td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">
+<td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">
 <!--   -->
-</a><code>public&nbsp;static&nbsp;final&nbsp;int</code></td>
-<td><code><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></code></td>
-<td class="colLast"><code>300</code></td>
+</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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></code></td>
+<td class="colLast"><code>"/hbase"</code></td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><a name="org.apache.hadoop.hbase.HConstants.DELIMITER">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apidocs/index-all.html
----------------------------------------------------------------------
diff --git a/apidocs/index-all.html b/apidocs/index-all.html
index 3fb0348..5a8c6c3 100644
--- a/apidocs/index-all.html
+++ b/apidocs/index-all.html
@@ -1479,6 +1479,18 @@
 <dd>
 <div class="block">The ZK client port key in the ZK properties map.</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+</dd>
 <dt><a href="org/apache/hadoop/hbase/client/backoff/ClientBackoffPolicy.html" title="interface in org.apache.hadoop.hbase.client.backoff"><span class="typeNameLink">ClientBackoffPolicy</span></a> - Interface in <a href="org/apache/hadoop/hbase/client/backoff/package-summary.html">org.apache.hadoop.hbase.client.backoff</a></dt>
 <dd>
 <div class="block">Configurable policy for the amount of time a client should wait for a new request to the
@@ -3516,6 +3528,10 @@
 <dd>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span></div>
 &nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLUSTER_DISTRIBUTED">DEFAULT_CLUSTER_DISTRIBUTED</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default value for cluster distributed mode</div>
@@ -3909,16 +3925,16 @@
 <dd>
 <div class="block">Default value for ZooKeeper session timeout</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
-<dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default client port that the zookeeper listens on</div>
 </dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
 <dd>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span> - Static variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/HConstants.html" title="class in org.apache.hadoop.hbase">HConstants</a></dt>
+<dd>&nbsp;</dd>
 <dt><a href="org/apache/hadoop/hbase/io/crypto/DefaultCipherProvider.html" title="class in org.apache.hadoop.hbase.io.crypto"><span class="typeNameLink">DefaultCipherProvider</span></a> - Class in <a href="org/apache/hadoop/hbase/io/crypto/package-summary.html">org.apache.hadoop.hbase.io.crypto</a></dt>
 <dd>
 <div class="block">The default cipher provider.</div>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
index 6db3baa..eff8609 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -600,321 +600,325 @@
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeparateClientZKCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAppendFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAppendFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFromClientSide3.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestHTableMultiplexerFlushCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestConnectionImplementation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionImplementation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreaded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractTestCITimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestCITimeout.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractTestAsyncTableScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestAsyncTableScan.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClient.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncSingleRequestRpcRetryingCaller.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncSingleRequestRpcRetryingCaller.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAdmin2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin2.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableBatch.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatch.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestBlockEvictionFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableNoncedRetry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableNoncedRetry.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMetaCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClientScannerRPCTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestHTableMultiplexer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexer.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncRegionLocatorTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTimeout.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestUpdateConfiguration.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAdmin1.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin1.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIllegalTableDescriptor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIllegalTableDescriptor.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestResultFromCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractTestScanCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestScanCursor.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestPutWithDelete.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestEnableTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestEnableTable.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestLeaseRenewal.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAdminBase.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBase.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestTableFavoredNodes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFromClientSideNoCodec.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMalformedCellFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestTimestampsFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableScanRenewLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSmallReversedScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotWithAcl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSizeFailures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScannerTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCheckAndMutate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCheckAndMutate.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestServerBusyException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMetaWithReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSplitOrMergeStatus.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocatorConcurrenyLimit.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocatorConcurrenyLimit.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAdminBuilder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIntraRowPagination.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncBufferMutator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">AbstractTestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/AbstractTestShell.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncReplicationAdminApiWithClusters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApiWithClusters.html#TEST_UTIL2">TEST_UTIL2</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestCIBadHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIBadHostname.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClientOperationInterrupt.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#util">util</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestGetProcedureResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestGetProcedureResult.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRawAsyncTableLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestScanWithoutFetchingData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAlwaysSetScannerId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAlwaysSetScannerId.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMvccConsistentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncTableScanMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestShortCircuitConnection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMultiParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestTableSnapshotScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAggregationClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAggregationClient.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestServerLoadDurability.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html#utility">utility</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html
index ee5ecc8..d4dc6ff 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RegionServerWithScanTimeout.html
@@ -223,7 +223,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBa
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeReg
 ion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver
 , getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplet
 e, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html
index 4b0f8b4..d8a4189 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestMetaCache.RegionServerWithFakeRpcServices.html
@@ -226,7 +226,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableO
 bserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerS
 ervice, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableO
 bserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLoc
 k, registerService, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html
index 86530fb..43fab11 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" target="_top">Frames</a></li>
@@ -418,7 +418,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
new file mode 100644
index 0000000..f63b62c
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
@@ -0,0 +1,568 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>TestSeparateClientZKCluster (Apache HBase 3.0.0-SNAPSHOT Test API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="TestSeparateClientZKCluster (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":10,"i3":10,"i4":10,"i5":10,"i6":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";
+var tableTab = "tableTab";
+var activeTableTab = "activeTableTab";
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestSeparateClientZKCluster.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" target="_top">Frames</a></li>
+<li><a href="TestSeparateClientZKCluster.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<!-- ======== START OF CLASS DATA ======== -->
+<div class="header">
+<div class="subTitle">org.apache.hadoop.hbase.client</div>
+<h2 title="Class TestSeparateClientZKCluster" class="title">Class TestSeparateClientZKCluster</h2>
+</div>
+<div class="contentContainer">
+<ul class="inheritance">
+<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.client.TestSeparateClientZKCluster</li>
+</ul>
+</li>
+</ul>
+<div class="description">
+<ul class="blockList">
+<li class="blockList">
+<hr>
+<br>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.47">TestSeparateClientZKCluster</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>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- =========== FIELD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.summary">
+<!--   -->
+</a>
+<h3>Field Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Field Summary table, listing fields, and an explanation">
+<caption><span>Fields</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#clientZkCluster">clientZkCluster</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <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></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#clientZkDir">clientZkDir</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#family">family</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.apache.commons.logging.Log</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>org.junit.rules.TestName</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#name">name</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#newVal">newVal</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#qualifier">qualifier</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#row">row</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#value">value</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/client/TestSeparateClientZKCluster.html#ZK_SESSION_TIMEOUT">ZK_SESSION_TIMEOUT</a></span></code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ======== CONSTRUCTOR SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.summary">
+<!--   -->
+</a>
+<h3>Constructor Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
+<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colOne"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#TestSeparateClientZKCluster--">TestSeparateClientZKCluster</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+</li>
+</ul>
+<!-- ========== METHOD SUMMARY =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.summary">
+<!--   -->
+</a>
+<h3>Method Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
+<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tr id="i0" class="altColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#afterAllTests--">afterAllTests</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
+<td class="colFirst"><code>static void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#beforeAllTests--">beforeAllTests</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/client/TestSeparateClientZKCluster.html#testAsyncTable--">testAsyncTable</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/client/TestSeparateClientZKCluster.html#testBasicOperation--">testBasicOperation</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/client/TestSeparateClientZKCluster.html#testMasterSwitch--">testMasterSwitch</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/client/TestSeparateClientZKCluster.html#testMetaMoveDuringClientZkClusterRestart--">testMetaMoveDuringClientZkClusterRestart</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/client/TestSeparateClientZKCluster.html#testMetaRegionMove--">testMetaRegionMove</a></span>()</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
+<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/ja
 va/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <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>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<div class="details">
+<ul class="blockList">
+<li class="blockList">
+<!-- ============ FIELD DETAIL =========== -->
+<ul class="blockList">
+<li class="blockList"><a name="field.detail">
+<!--   -->
+</a>
+<h3>Field Detail</h3>
+<a name="LOG">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>LOG</h4>
+<pre>private static final&nbsp;org.apache.commons.logging.Log <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.48">LOG</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>private static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.49">TEST_UTIL</a></pre>
+</li>
+</ul>
+<a name="clientZkDir">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>clientZkDir</h4>
+<pre>private static final&nbsp;<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> <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.50">clientZkDir</a></pre>
+</li>
+</ul>
+<a name="ZK_SESSION_TIMEOUT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>ZK_SESSION_TIMEOUT</h4>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.51">ZK_SESSION_TIMEOUT</a></pre>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.client.TestSeparateClientZKCluster.ZK_SESSION_TIMEOUT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="clientZkCluster">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>clientZkCluster</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.52">clientZkCluster</a></pre>
+</li>
+</ul>
+<a name="family">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>family</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.54">family</a></pre>
+</li>
+</ul>
+<a name="qualifier">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>qualifier</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.55">qualifier</a></pre>
+</li>
+</ul>
+<a name="row">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>row</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.56">row</a></pre>
+</li>
+</ul>
+<a name="value">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>value</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.57">value</a></pre>
+</li>
+</ul>
+<a name="newVal">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>newVal</h4>
+<pre>private final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.58">newVal</a></pre>
+</li>
+</ul>
+<a name="name">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>name</h4>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.61">name</a></pre>
+</li>
+</ul>
+<a name="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<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/client/TestSeparateClientZKCluster.html#line.64">CLASS_RULE</a></pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ========= CONSTRUCTOR DETAIL ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="constructor.detail">
+<!--   -->
+</a>
+<h3>Constructor Detail</h3>
+<a name="TestSeparateClientZKCluster--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestSeparateClientZKCluster</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.47">TestSeparateClientZKCluster</a>()</pre>
+</li>
+</ul>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="beforeAllTests--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>beforeAllTests</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.68">beforeAllTests</a>()
+                           throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="afterAllTests--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>afterAllTests</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.87">afterAllTests</a>()
+                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testBasicOperation--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testBasicOperation</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.94">testBasicOperation</a>()
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMasterSwitch--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMasterSwitch</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.121">testMasterSwitch</a>()
+                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMetaRegionMove--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMetaRegionMove</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.145">testMetaRegionMove</a>()
+                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMetaMoveDuringClientZkClusterRestart--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMetaMoveDuringClientZkClusterRestart</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.201">testMetaMoveDuringClientZkClusterRestart</a>()
+                                              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testAsyncTable--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testAsyncTable</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#line.248">testAsyncTable</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>
+</ul>
+</div>
+</div>
+<!-- ========= END OF CLASS DATA ========= -->
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li class="navBarCell1Rev">Class</li>
+<li><a href="class-use/TestSeparateClientZKCluster.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" target="_top">Frames</a></li>
+<li><a href="TestSeparateClientZKCluster.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<div>
+<ul class="subNavList">
+<li>Summary:&nbsp;</li>
+<li>Nested&nbsp;|&nbsp;</li>
+<li><a href="#field.summary">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.summary">Method</a></li>
+</ul>
+<ul class="subNavList">
+<li>Detail:&nbsp;</li>
+<li><a href="#field.detail">Field</a>&nbsp;|&nbsp;</li>
+<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
+<li><a href="#method.detail">Method</a></li>
+</ul>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/TestServerBusyException.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/TestServerBusyException.html b/testdevapidocs/org/apache/hadoop/hbase/client/TestServerBusyException.html
index 9560427..acbd550 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/TestServerBusyException.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/TestServerBusyException.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -406,7 +406,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">


[25/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
index 6fa64ff..8ac7885 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.OperationStatusCode.html
@@ -191,1169 +191,1182 @@
 <span class="sourceLineNo">183</span>  /** Name of ZooKeeper quorum configuration parameter. */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  public static final String ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";<a name="line.184"></a>
 <span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      "hbase.zookeeper.property.";<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.191"></a>
+<span class="sourceLineNo">186</span>  /** Name of ZooKeeper quorum configuration parameter for client to locate meta. */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public static final String CLIENT_ZOOKEEPER_QUORUM = "hbase.client.zookeeper.quorum";<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  /** Client port of ZooKeeper for client to locate meta */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public static final String CLIENT_ZOOKEEPER_CLIENT_PORT =<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      "hbase.client.zookeeper.property.clientPort";<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * fact that this is not an HBase configuration key.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.197"></a>
+<span class="sourceLineNo">193</span>  /** Indicate whether the client ZK are observer nodes of the server ZK */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public static final String CLIENT_ZOOKEEPER_OBSERVER_MODE =<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      "hbase.client.zookeeper.observer.mode";<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /** Assuming client zk not in observer mode and master need to synchronize information */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  public static final boolean DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE = false;<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      "hbase.zookeeper.property.";<a name="line.201"></a>
 <span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  /** Default client port that the zookeeper listens on */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int DEFAULT_ZOOKEPER_CLIENT_PORT = 2181;<a name="line.204"></a>
+<span class="sourceLineNo">203</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<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>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * connections<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /** Parameter name for the ZK data directory */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.220"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * fact that this is not an HBase configuration key.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  /** Default client port that the zookeeper listens on */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public static final int DEFAULT_ZOOKEEPER_CLIENT_PORT = 2181;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.220"></a>
 <span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /** Parameter name for the ZK tick time */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public static final int DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS = 300;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  /** Default value for ZooKeeper session timeout */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.233"></a>
+<span class="sourceLineNo">222</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * connections<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  /** Parameter name for the ZK data directory */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.233"></a>
 <span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  /** Parameter name for port region server listens on. */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /** Default port region server listens on. */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  /** default port for region server web api */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  /** A configuration key for regionserver info port */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    "hbase.regionserver.info.port";<a name="line.246"></a>
+<span class="sourceLineNo">235</span>  /** Parameter name for the ZK tick time */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public static final int DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS = 300;<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  /** Default value for ZooKeeper session timeout */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  /** Parameter name for what region server implementation to use. */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /** Parameter name for what master implementation to use. */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /** Parameter name for how often threads should wake up */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<a name="line.259"></a>
+<span class="sourceLineNo">248</span>  /** Parameter name for port region server listens on. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  /** Default port region server listens on. */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /** default port for region server web api */<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  /** A configuration key for regionserver info port */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    "hbase.regionserver.info.port";<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /** Default value for thread wake frequency */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<a name="line.272"></a>
+<span class="sourceLineNo">261</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /** Parameter name for what region server implementation to use. */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  /** Parameter name for what master implementation to use. */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>  /** Parameter name for how often threads should wake up */<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<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>   * Parameter name and default value for major compaction jitter.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * to cause compaction to occur a given amount of time either side of<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  /** Parameter name for HBase instance root directory */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  /** Parameter name for HBase client IPC pool type */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /** Parameter name for HBase client IPC pool size */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.295"></a>
+<span class="sourceLineNo">274</span>  /** Default value for thread wake frequency */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<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>   * Parameter name and default value for major compaction jitter.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * to cause compaction to occur a given amount of time either side of<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.295"></a>
 <span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>  /** Parameter name for HBase client operation timeout. */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /** Parameter name for HBase client operation timeout. */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    "hbase.client.meta.operation.timeout";<a name="line.302"></a>
+<span class="sourceLineNo">297</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  /** Parameter name for HBase instance root directory */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.305"></a>
+<span class="sourceLineNo">304</span>  /** Parameter name for HBase client IPC pool type */<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>  /** Used to construct the name of the log directory for a region server */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.315"></a>
+<span class="sourceLineNo">307</span>  /** Parameter name for HBase client IPC pool size */<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Parameter name for HBase client operation timeout. */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  /** Parameter name for HBase client operation timeout. */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    "hbase.client.meta.operation.timeout";<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.318"></a>
 <span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /** Staging dir used by bulk load */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  /** Used by HBCK to sideline backup data */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /** Any artifacts left from migration can be moved here */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /** Conf key for the max file size after which we split the region */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      "hbase.hregion.max.filesize";<a name="line.339"></a>
+<span class="sourceLineNo">320</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  /** Used to construct the name of the log directory for a region server */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /** Staging dir used by bulk load */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Default maximum file size */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.342"></a>
+<span class="sourceLineNo">341</span>  /** Used by HBCK to sideline backup data */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<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>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Default max row size (1 Gb).<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<a name="line.352"></a>
+<span class="sourceLineNo">344</span>  /** Any artifacts left from migration can be moved here */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Conf key for the max file size after which we split the region */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      "hbase.hregion.max.filesize";<a name="line.352"></a>
 <span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * The max number of threads used for opening and closing stores or store<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * files in parallel<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    "hbase.hstore.open.and.close.threads.max";<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>   * The default number for the max number of threads used for opening and<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * closing stores or store files in parallel<a name="line.363"></a>
+<span class="sourceLineNo">354</span>  /** Default maximum file size */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<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>   * Default max row size (1 Gb).<a name="line.363"></a>
 <span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.365"></a>
+<span class="sourceLineNo">365</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<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>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * runaway memstore during spikes in update traffic.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.376"></a>
+<span class="sourceLineNo">368</span>   * The max number of threads used for opening and closing stores or store<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * files in parallel<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    "hbase.hstore.open.and.close.threads.max";<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * The default number for the max number of threads used for opening and<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * closing stores or store files in parallel<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.378"></a>
+<span class="sourceLineNo">378</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.378"></a>
 <span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      "hbase.hregion.memstore.flush.size";<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      false;<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.391"></a>
+<span class="sourceLineNo">380</span>  /**<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * runaway memstore during spikes in update traffic.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  /** name of the file for unique cluster ID */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /** Default value for cluster ID */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // Always store the location of the root table's HRegion.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  // This HRegion is never split.<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  // Do we ever need to know all the information that we are storing?<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // "." (and since no other table name can start with either of these<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // should go down.<a name="line.422"></a>
+<span class="sourceLineNo">393</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      "hbase.hregion.memstore.flush.size";<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      false;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  /** name of the file for unique cluster ID */<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  /** Default value for cluster ID */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // Always store the location of the root table's HRegion.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  // This HRegion is never split.<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // Do we ever need to know all the information that we are storing?<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /** delimiter used between portions of a region name */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  /** The catalog family as a string*/<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /** The catalog family */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /** The RegionInfo qualifier as a string */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>  /** The regioninfo column qualifier */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /** The server column qualifier */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  /** The server column qualifier */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /** The startcode column qualifier */<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /** The startcode column qualifier */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.449"></a>
+<span class="sourceLineNo">424</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  // "." (and since no other table name can start with either of these<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // should go down.<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  /** delimiter used between portions of a region name */<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  /** The catalog family as a string*/<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /** The catalog family */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /** The RegionInfo qualifier as a string */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  /** The open seqnum column qualifier */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  /** The open seqnum column qualifier */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>  /** The state column qualifier */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.457"></a>
+<span class="sourceLineNo">451</span>  /** The regioninfo column qualifier */<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>  /** The server column qualifier */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /** The server column qualifier */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.457"></a>
 <span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * The serverName column qualifier. Its the server where the region is<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * transitioning on, while column server is the server where the region is<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /** The lower-half split region column qualifier */<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  /** The upper-half split region column qualifier */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /** The lower-half merge region column qualifier */<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /** The upper-half merge region column qualifier */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /** The catalog family as a string*/<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /** The catalog family */<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  /** The serialized table state qualifier */<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>  /** The replication barrier family as a string*/<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  /** The replication barrier family */<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<a name="line.496"></a>
+<span class="sourceLineNo">459</span>  /** The startcode column qualifier */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  /** The startcode column qualifier */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>  /** The open seqnum column qualifier */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  /** The open seqnum column qualifier */<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /** The state column qualifier */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>  /**<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * The serverName column qualifier. Its the server where the region is<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * transitioning on, while column server is the server where the region is<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  /** The lower-half split region column qualifier */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /** The upper-half split region column qualifier */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /** The lower-half merge region column qualifier */<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span>  /** The upper-half merge region column qualifier */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /** The catalog family as a string*/<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * The meta table version column qualifier.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * table: i.e. in the 'info:v' column.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  /**<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * The current version of the meta table.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * byte[] serialization from Writables to Protobuf.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * See HRegionInfo.VERSION<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  public static final short META_VERSION = 1;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // Other constants<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>   * An empty instance.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * Last row in a table.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    * table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * Max length a row can have because of the limitation in TFile.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   *<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * to refer to the latest.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * On server side, this acts as a notation.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * (1) For a cell of Put, which has this notation,<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   *     its timestamp will be replaced with server's current time.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * (2) For a cell of Delete, which has this notation,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *           gets.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   *<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   */<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>  /**<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * a client.<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  @Deprecated<a name="line.580"></a>
-<span class="sourceLineNo">581</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>  /**<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * LATEST_TIMESTAMP in bytes form<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    // big-endian<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    (byte) LATEST_TIMESTAMP,<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  };<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  /**<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * Define for 'return-all-versions'.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   */<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Unlimited time-to-live.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>//  public static final int FOREVER = -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  public static final int FOREVER = Integer.MAX_VALUE;<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * Seconds in a day, hour and minute<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  public static final int DAY_IN_SECONDS = 24 * 60 * 60;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public static final int HOUR_IN_SECONDS = 60 * 60;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public static final int MINUTE_IN_SECONDS = 60;<a name="line.614"></a>
+<span class="sourceLineNo">498</span>  /** The catalog family */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>  /** The serialized table state qualifier */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  /** The replication barrier family as a string*/<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** The replication barrier family */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<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>   * The meta table version column qualifier.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * table: i.e. in the 'info:v' column.<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<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>   * The current version of the meta table.<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * byte[] serialization from Writables to Protobuf.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * See HRegionInfo.VERSION<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public static final short META_VERSION = 1;<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  // Other constants<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * An empty instance.<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
+<span class="sourceLineNo">535</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<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>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<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>   * Last row in a table.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    * table<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  /**<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * Max length a row can have because of the limitation in TFile.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   */<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   *<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   * to refer to the latest.<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   * On server side, this acts as a notation.<a name="line.565"></a>
+<span class="sourceLineNo">566</span>   * (1) For a cell of Put, which has this notation,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>   *     its timestamp will be replaced with server's current time.<a name="line.567"></a>
+<span class="sourceLineNo">568</span>   * (2) For a cell of Delete, which has this notation,<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   *           gets.<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<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>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * a client.<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  @Deprecated<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  /**<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * LATEST_TIMESTAMP in bytes form<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // big-endian<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    (byte) LATEST_TIMESTAMP,<a name="line.608"></a>
+<span class="sourceLineNo">609</span>  };<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>  /**<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   * Define for 'return-all-versions'.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.614"></a>
 <span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  //TODO: although the following are referenced widely to format strings for<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  //      the shell. They really aren't a part of the public API. It would be<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  //      nice if we could put them somewhere where they did not need to be<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  //      public. They could have package visibility<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public static final String NAME = "NAME";<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  public static final String VERSIONS = "VERSIONS";<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public static final String IN_MEMORY = "IN_MEMORY";<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public static final String METADATA = "METADATA";<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public static final String CONFIGURATION = "CONFIGURATION";<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>   * Retrying we multiply hbase.client.pause setting by what we have in this array until we<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * run out

<TRUNCATED>

[34/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
index c6298a1..52e5608 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
@@ -128,7 +128,7 @@ var activeTableTab = "activeTableTab";
 <hr>
 <br>
 <pre>@InterfaceAudience.LimitedPrivate(value="Tools")
-public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.236">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.238">HMaster</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>
 implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices.html" title="interface in org.apache.hadoop.hbase.master">MasterServices</a></pre>
 <div class="block">HMaster is the "master server" for HBase. An HBase cluster has one active
@@ -312,35 +312,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterActiveTime">masterActiveTime</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterAddressSyncer">masterAddressSyncer</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterCheckCompression">masterCheckCompression</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterCheckEncryption">masterCheckEncryption</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterFinishedInitializationTime">masterFinishedInitializationTime</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private org.eclipse.jetty.server.Server</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterJettyServer">masterJettyServer</a></span></code>
 <div class="block">jetty server for master to redirect requests to regionserver infoServer</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#maxBlancingTime">maxBlancingTime</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private double</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#maxRitPercent">maxRitPercent</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergePlanCount">mergePlanCount</a></span></code>&nbsp;</td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#metaLocationSyncer">metaLocationSyncer</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#metricsMaster">metricsMaster</a></span></code>&nbsp;</td>
@@ -1421,7 +1429,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></h3>
-<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/ha
 doop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDepl
 oyTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionSe
 rver.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regi
 onserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#abort-java.lang.String-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addRegion-org.apache.hadoop.hbase.regionserver.HRegion-">addRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#addToMovedRegions-java.lang.String-org.apache.hadoop.hbase.ServerName-long-">addToMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#checkFileSystem--">checkFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#cleanMovedRegions--">cleanMovedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#clearRegionBlockCache-org.apache.hadoop.hbase.regionserver.Region-">clearRegionBlockCache</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAllRegions-boolean-">closeAllRegions</a
 >, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeAndOfflineRegionForSplitOrMerge-java.util.List-">closeAndOfflineRegionForSplitOrMerge</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#closeRegion-java.lang.String-boolean-org.apache.hadoop.hbase.ServerName-">closeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#constructRegionServer-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#convertThrowableToIOE-java.lang.Throwable-java.lang.String-">convertThrowableToIOE</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createClusterConnection--">createClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createConnection-org.apache.hadoop.conf.Configuration-">createConnection</a>, <
 a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionLoad-java.lang.String-">createRegionLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub--">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#createRegionServerStatusStub-boolean-">createRegionServerStatusStub</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#execRegionServerService-org.apache.hbase.thirdparty.com.google.protobuf.RpcController-org.apache.hadoop.hbase.shaded.protobuf.generated.ClientProtos.CoprocessorServiceRequest-">execRegionServerService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#executeProcedure-long-org.apache.hadoop.hbase.procedure2.RSProcedureCallable-">executeProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCacheConfig
 --">getCacheConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getChoreService--">getChoreService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterConnection--">getClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getClusterId--">getClusterId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionPressure--">getCompactionPressure</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactionRequestor--">getCompactionRequestor</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCompactSplitThread--">getCompactSplitThread</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfiguration--">getConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConfig
 urationManager--">getConfigurationManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getConnection--">getConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getCoordinatedStateManager--">getCoordinatedStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getEventLoopGroupConfig--">getEventLoopGroupConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getExecutorService--">getExecutorService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFavoredNodesForRegion-java.lang.String-">getFavoredNodesForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFileSystem--">getFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushPressure--">getFlushPressure</a>, <a href="../../../../../org/apache/had
 oop/hbase/regionserver/HRegionServer.html#getFlushRequester--">getFlushRequester</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFlushThroughputController--">getFlushThroughputController</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getFsTableDescriptors--">getFsTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getHeapMemoryManager--">getHeapMemoryManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getInfoServer--">getInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLastSequenceId-byte:A-">getLastSequenceId</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getLeases--">getLeases</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMasterAddressTracker--">getMasterAddressTracker</a>, <a href="../.
 ./../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableLocator--">getMetaTableLocator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetrics--">getMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMostLoadedRegions--">getMostLoadedRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNonceManager--">getNonceManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getNumberOfOnlineRegions--">getNumberOfOnlineRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegion-byte:A-">getOnlineRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineRegionsLocalContext--">getOnlineRegionsLocalContext</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getOnlineTables--">getOnlineTabl
 es</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-byte:A-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegion-java.lang.String-">getRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionBlockLocations-java.lang.String-">getRegionBlockLocations</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-byte:A-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionByEncodedName-java.lang.String-">getRegionByEncodedName</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions--">getRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegions-org.apache.hadoop.hbase.TableName-">getRegions</a>, <a href="../../../../../org/apache/hado
 op/hbase/regionserver/HRegionServer.html#getRegionServerAccounting--">getRegionServerAccounting</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessorHost--">getRegionServerCoprocessorHost</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerCoprocessors--">getRegionServerCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerMetrics--">getRegionServerMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerRpcQuotaManager--">getRegionServerRpcQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionServerSpaceQuotaManager--">getRegionServerSpaceQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRegionsInTransitionInRS--">getRegionsInTransitionInRS</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/regionserver/HRegionServer.html#getReplicationSourceService--">getReplicationSourceService</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRootDir--">getRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRpcServer--">getRpcServer</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getRSRpcServices--">getRSRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getSecureBulkLoadManager--">getSecureBulkLoadManager</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getStartcode--">getStartcode</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getThreadWakeFrequency--">getThreadWakeFrequency</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWAL-org.apache.hadoop.hbase.client.RegionInfo-">getWAL</a>, 
 <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALFileSystem--">getWALFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWalRoller--">getWalRoller</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALRootDir--">getWALRootDir</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getWALs--">getWALs</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#handleReportForDutyResponse-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse-">handleReportForDutyResponse</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#initializeMemStoreChunkCreator--">initializeMemStoreChunkCreator</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isAborted--">isAborted</a>, <a href="../../../../../org/apache/ha
 doop/hbase/regionserver/HRegionServer.html#isClusterUp--">isClusterUp</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isOnline--">isOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#post
 OpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSize
 Store-">reportRegionSizesForQuotas</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#toString--">toString</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a>, <a href="../../../../../org/apache/hadoop/hbase/region
 server/HRegionServer.html#unassign-byte:A-">unassign</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a>, <a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">
@@ -1485,7 +1493,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>LOG</h4>
-<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.237">LOG</a></pre>
+<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.239">LOG</a></pre>
 </li>
 </ul>
 <a name="MASTER">
@@ -1494,7 +1502,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER</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/master/HMaster.html#line.293">MASTER</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/master/HMaster.html#line.295">MASTER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.MASTER">Constant Field Values</a></dd>
@@ -1507,7 +1515,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMasterManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.296">activeMasterManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ActiveMasterManager.html" title="class in org.apache.hadoop.hbase.master">ActiveMasterManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.298">activeMasterManager</a></pre>
 </li>
 </ul>
 <a name="regionServerTracker">
@@ -1516,7 +1524,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.298">regionServerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html" title="class in org.apache.hadoop.hbase.master">RegionServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.300">regionServerTracker</a></pre>
 </li>
 </ul>
 <a name="drainingServerTracker">
@@ -1525,7 +1533,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>drainingServerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.300">drainingServerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html" title="class in org.apache.hadoop.hbase.master">DrainingServerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.302">drainingServerTracker</a></pre>
 </li>
 </ul>
 <a name="loadBalancerTracker">
@@ -1534,7 +1542,25 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>loadBalancerTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.302">loadBalancerTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">LoadBalancerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.304">loadBalancerTracker</a></pre>
+</li>
+</ul>
+<a name="metaLocationSyncer">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>metaLocationSyncer</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.306">metaLocationSyncer</a></pre>
+</li>
+</ul>
+<a name="masterAddressSyncer">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>masterAddressSyncer</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.308">masterAddressSyncer</a></pre>
 </li>
 </ul>
 <a name="splitOrMergeTracker">
@@ -1543,7 +1569,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitOrMergeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.305">splitOrMergeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.311">splitOrMergeTracker</a></pre>
 </li>
 </ul>
 <a name="regionNormalizerTracker">
@@ -1552,7 +1578,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionNormalizerTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.308">regionNormalizerTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">RegionNormalizerTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.314">regionNormalizerTracker</a></pre>
 </li>
 </ul>
 <a name="maintenanceModeTracker">
@@ -1561,7 +1587,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maintenanceModeTracker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.311">maintenanceModeTracker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterMaintenanceModeTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterMaintenanceModeTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.317">maintenanceModeTracker</a></pre>
 </li>
 </ul>
 <a name="clusterSchemaService">
@@ -1570,7 +1596,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterSchemaService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.313">clusterSchemaService</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterSchemaService.html" title="interface in org.apache.hadoop.hbase.master">ClusterSchemaService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.319">clusterSchemaService</a></pre>
 </li>
 </ul>
 <a name="HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">
@@ -1579,7 +1605,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</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/master/HMaster.html#line.315">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</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/master/HMaster.html#line.321">HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1592,7 +1618,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</h4>
-<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.317">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.323">DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">Constant Field Values</a></dd>
@@ -1605,7 +1631,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsMaster</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.320">metricsMaster</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MetricsMaster.html" title="class in org.apache.hadoop.hbase.master">MetricsMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.326">metricsMaster</a></pre>
 </li>
 </ul>
 <a name="fileSystemManager">
@@ -1614,7 +1640,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>fileSystemManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.322">fileSystemManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterFileSystem.html" title="class in org.apache.hadoop.hbase.master">MasterFileSystem</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.328">fileSystemManager</a></pre>
 </li>
 </ul>
 <a name="walManager">
@@ -1623,7 +1649,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>walManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.323">walManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html" title="class in org.apache.hadoop.hbase.master">MasterWalManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.329">walManager</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -1632,7 +1658,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.326">serverManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.332">serverManager</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -1641,7 +1667,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.329">assignmentManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.335">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="replicationPeerManager">
@@ -1650,7 +1676,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationPeerManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.332">replicationPeerManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.338">replicationPeerManager</a></pre>
 </li>
 </ul>
 <a name="rsFatals">
@@ -1659,7 +1685,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>rsFatals</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.337">rsFatals</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/monitoring/MemoryBoundedLogMessageBuffer.html" title="class in org.apache.hadoop.hbase.monitoring">MemoryBoundedLogMessageBuffer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.343">rsFatals</a></pre>
 </li>
 </ul>
 <a name="activeMaster">
@@ -1668,7 +1694,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>activeMaster</h4>
-<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.340">activeMaster</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.346">activeMaster</a></pre>
 </li>
 </ul>
 <a name="initialized">
@@ -1677,7 +1703,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>initialized</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.343">initialized</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.349">initialized</a></pre>
 </li>
 </ul>
 <a name="serviceStarted">
@@ -1686,7 +1712,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serviceStarted</h4>
-<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.347">serviceStarted</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.353">serviceStarted</a></pre>
 </li>
 </ul>
 <a name="serverCrashProcessingEnabled">
@@ -1695,7 +1721,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>serverCrashProcessingEnabled</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.350">serverCrashProcessingEnabled</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureEvent.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureEvent</a>&lt;?&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.356">serverCrashProcessingEnabled</a></pre>
 </li>
 </ul>
 <a name="maxBlancingTime">
@@ -1704,7 +1730,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxBlancingTime</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.354">maxBlancingTime</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.360">maxBlancingTime</a></pre>
 </li>
 </ul>
 <a name="maxRitPercent">
@@ -1713,7 +1739,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>maxRitPercent</h4>
-<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.356">maxRitPercent</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.362">maxRitPercent</a></pre>
 </li>
 </ul>
 <a name="lockManager">
@@ -1722,7 +1748,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>lockManager</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.358">lockManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/locking/LockManager.html" title="class in org.apache.hadoop.hbase.master.locking">LockManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.364">lockManager</a></pre>
 </li>
 </ul>
 <a name="balancer">
@@ -1731,7 +1757,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.360">balancer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html" title="interface in org.apache.hadoop.hbase.master">LoadBalancer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.366">balancer</a></pre>
 </li>
 </ul>
 <a name="normalizer">
@@ -1740,7 +1766,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizer</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.361">normalizer</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizer.html" title="interface in org.apache.hadoop.hbase.master.normalizer">RegionNormalizer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.367">normalizer</a></pre>
 </li>
 </ul>
 <a name="balancerChore">
@@ -1749,7 +1775,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>balancerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.362">balancerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/BalancerChore.html" title="class in org.apache.hadoop.hbase.master.balancer">BalancerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.368">balancerChore</a></pre>
 </li>
 </ul>
 <a name="normalizerChore">
@@ -1758,7 +1784,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>normalizerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.363">normalizerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer">RegionNormalizerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.369">normalizerChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusChore">
@@ -1767,7 +1793,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.364">clusterStatusChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/balancer/ClusterStatusChore.html" title="class in org.apache.hadoop.hbase.master.balancer">ClusterStatusChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.370">clusterStatusChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusPublisherChore">
@@ -1776,7 +1802,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusPublisherChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.365">clusterStatusPublisherChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ClusterStatusPublisher.html" title="class in org.apache.hadoop.hbase.master">ClusterStatusPublisher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.371">clusterStatusPublisherChore</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorChore">
@@ -1785,7 +1811,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorChore</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.367">catalogJanitorChore</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/CatalogJanitor.html" title="class in org.apache.hadoop.hbase.master">CatalogJanitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.373">catalogJanitorChore</a></pre>
 </li>
 </ul>
 <a name="logCleaner">
@@ -1794,7 +1820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>logCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.368">logCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/LogCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">LogCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.374">logCleaner</a></pre>
 </li>
 </ul>
 <a name="hfileCleaner">
@@ -1803,7 +1829,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>hfileCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.369">hfileCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">HFileCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.375">hfileCleaner</a></pre>
 </li>
 </ul>
 <a name="replicationBarrierCleaner">
@@ -1812,7 +1838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>replicationBarrierCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.370">replicationBarrierCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/cleaner/ReplicationBarrierCleaner.html" title="class in org.apache.hadoop.hbase.master.cleaner">ReplicationBarrierCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.376">replicationBarrierCleaner</a></pre>
 </li>
 </ul>
 <a name="expiredMobFileCleanerChore">
@@ -1821,7 +1847,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>expiredMobFileCleanerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.371">expiredMobFileCleanerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/ExpiredMobFileCleanerChore.html" title="class in org.apache.hadoop.hbase.master">ExpiredMobFileCleanerChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.377">expiredMobFileCleanerChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactChore">
@@ -1830,7 +1856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.372">mobCompactChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MobCompactionChore.html" title="class in org.apache.hadoop.hbase.master">MobCompactionChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.378">mobCompactChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactThread">
@@ -1839,7 +1865,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactThread</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.373">mobCompactThread</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/MasterMobCompactionThread.html" title="class in org.apache.hadoop.hbase.master">MasterMobCompactionThread</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.379">mobCompactThread</a></pre>
 </li>
 </ul>
 <a name="mobCompactionLock">
@@ -1848,7 +1874,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionLock</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.375">mobCompactionLock</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/IdLock.html" title="class in org.apache.hadoop.hbase.util">IdLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.381">mobCompactionLock</a></pre>
 </li>
 </ul>
 <a name="mobCompactionStates">
@@ -1857,7 +1883,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCompactionStates</h4>
-<pre>private&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/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.378">mobCompactionStates</a></pre>
+<pre>private&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/concurrent/atomic/AtomicInteger.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicInteger</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.384">mobCompactionStates</a></pre>
 </li>
 </ul>
 <a name="cpHost">
@@ -1866,7 +1892,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>cpHost</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.380">cpHost</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html" title="class in org.apache.hadoop.hbase.master">MasterCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.386">cpHost</a></pre>
 </li>
 </ul>
 <a name="preLoadTableDescriptors">
@@ -1875,7 +1901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>preLoadTableDescriptors</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.382">preLoadTableDescriptors</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">preLoadTableDescriptors</a></pre>
 </li>
 </ul>
 <a name="masterActiveTime">
@@ -1884,7 +1910,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterActiveTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.385">masterActiveTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.391">masterActiveTime</a></pre>
 </li>
 </ul>
 <a name="masterFinishedInitializationTime">
@@ -1893,7 +1919,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterFinishedInitializationTime</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.388">masterFinishedInitializationTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.394">masterFinishedInitializationTime</a></pre>
 </li>
 </ul>
 <a name="masterCheckCompression">
@@ -1902,7 +1928,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckCompression</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.391">masterCheckCompression</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.397">masterCheckCompression</a></pre>
 </li>
 </ul>
 <a name="masterCheckEncryption">
@@ -1911,7 +1937,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>masterCheckEncryption</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.394">masterCheckEncryption</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.400">masterCheckEncryption</a></pre>
 </li>
 </ul>
 <a name="coprocessorServiceHandlers">
@@ -1920,7 +1946,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorServiceHandlers</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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.396">coprocessorServiceHandlers</a></pre>
+<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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.402">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="snapshotManager">
@@ -1929,7 +1955,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotManager</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.399">snapshotManager</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.405">snapshotManager</a></pre>
 </li>
 </ul>
 <a name="mpmHost">
@@ -1938,7 +1964,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mpmHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.401">mpmHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/MasterProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">MasterProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.407">mpmHost</a></pre>
 </li>
 </ul>
 <a name="quotaManager">
@@ -1947,7 +1973,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaManager</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.404">quotaManager</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/MasterQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">MasterQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.410">quotaManager</a></pre>
 </li>
 </ul>
 <a name="spaceQuotaSnapshotNotifier">
@@ -1956,7 +1982,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>spaceQuotaSnapshotNotifier</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.405">spaceQuotaSnapshotNotifier</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.411">spaceQuotaSnapshotNotifier</a></pre>
 </li>
 </ul>
 <a name="quotaObserverChore">
@@ -1965,7 +1991,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>quotaObserverChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.406">quotaObserverChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/QuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">QuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.412">quotaObserverChore</a></pre>
 </li>
 </ul>
 <a name="snapshotQuotaChore">
@@ -1974,7 +2000,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>snapshotQuotaChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.407">snapshotQuotaChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.413">snapshotQuotaChore</a></pre>
 </li>
 </ul>
 <a name="procedureExecutor">
@@ -1983,7 +2009,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureExecutor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.409">procedureExecutor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/ProcedureExecutor.html" title="class in org.apache.hadoop.hbase.procedure2">ProcedureExecutor</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.415">procedureExecutor</a></pre>
 </li>
 </ul>
 <a name="procedureStore">
@@ -1992,7 +2018,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureStore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.410">procedureStore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.416">procedureStore</a></pre>
 </li>
 </ul>
 <a name="tableStateManager">
@@ -2001,7 +2027,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>tableStateManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.413">tableStateManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.419">tableStateManager</a></pre>
 </li>
 </ul>
 <a name="splitPlanCount">
@@ -2010,7 +2036,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>splitPlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.415">splitPlanCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.421">splitPlanCount</a></pre>
 </li>
 </ul>
 <a name="mergePlanCount">
@@ -2019,7 +2045,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>mergePlanCount</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.416">mergePlanCount</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.422">mergePlanCount</a></pre>
 </li>
 </ul>
 <a name="favoredNodesManager">
@@ -2028,7 +2054,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>favoredNodesManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.419">favoredNodesManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/favored/FavoredNodesManager.html" title="class in org.apache.hadoop.hbase.favored">FavoredNodesManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.425">favoredNodesManager</a></pre>
 </li>
 </ul>
 <a name="masterJettyServer">
@@ -2037,7 +2063,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>masterJettyServer</h4>
-<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.422">masterJettyServer</a></pre>
+<pre>private&nbsp;org.eclipse.jetty.server.Server <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.428">masterJettyServer</a></pre>
 <div class="block">jetty server for master to redirect requests to regionserver infoServer</div>
 </li>
 </ul>
@@ -2055,7 +2081,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockListLast">
 <li class="blockList">
 <h4>HMaster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.478">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.484">HMaster</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)
         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">Initializes the HMaster. The steps are as follows:
@@ -2089,7 +2115,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>getUseThisHostnameInstead</h4>
-<pre>protected&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/master/HMaster.html#line.549">getUseThisHostnameInstead</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
+<pre>protected&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/master/HMaster.html#line.555">getUseThisHostnameInstead</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></dd>
@@ -2102,7 +2128,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.556">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.562">run</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#run--">HRegionServer</a></code></span></div>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 <dl>
@@ -2119,7 +2145,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>putUpJettyServer</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.592">putUpJettyServer</a>()
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.600">putUpJettyServer</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>
@@ -2133,7 +2159,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaTableObserver</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>,<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.642">getMetaTableObserver</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/function/Function.html?is-external=true" title="class or interface in java.util.function">Function</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>,<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TableDescriptorBuilder</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.650">getMetaTableObserver</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#getMetaTableObserver--">getMetaTableObserver</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a></code></dd>
@@ -2146,7 +2172,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>login</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.649">login</a>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.657">login</a>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
                      <a href="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)
               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">For compatibility, if failed with regionserver credentials, try the master one</div>
@@ -2164,7 +2190,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>waitForMasterActive</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.664">waitFor

<TRUNCATED>

[39/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html b/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
index 6fa64ff..8ac7885 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/HConstants.html
@@ -191,1169 +191,1182 @@
 <span class="sourceLineNo">183</span>  /** Name of ZooKeeper quorum configuration parameter. */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  public static final String ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";<a name="line.184"></a>
 <span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      "hbase.zookeeper.property.";<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.191"></a>
+<span class="sourceLineNo">186</span>  /** Name of ZooKeeper quorum configuration parameter for client to locate meta. */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public static final String CLIENT_ZOOKEEPER_QUORUM = "hbase.client.zookeeper.quorum";<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  /** Client port of ZooKeeper for client to locate meta */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public static final String CLIENT_ZOOKEEPER_CLIENT_PORT =<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      "hbase.client.zookeeper.property.clientPort";<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * fact that this is not an HBase configuration key.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.197"></a>
+<span class="sourceLineNo">193</span>  /** Indicate whether the client ZK are observer nodes of the server ZK */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public static final String CLIENT_ZOOKEEPER_OBSERVER_MODE =<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      "hbase.client.zookeeper.observer.mode";<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /** Assuming client zk not in observer mode and master need to synchronize information */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  public static final boolean DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE = false;<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      "hbase.zookeeper.property.";<a name="line.201"></a>
 <span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  /** Default client port that the zookeeper listens on */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int DEFAULT_ZOOKEPER_CLIENT_PORT = 2181;<a name="line.204"></a>
+<span class="sourceLineNo">203</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<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>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * connections<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /** Parameter name for the ZK data directory */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.220"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * fact that this is not an HBase configuration key.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  /** Default client port that the zookeeper listens on */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public static final int DEFAULT_ZOOKEEPER_CLIENT_PORT = 2181;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.220"></a>
 <span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /** Parameter name for the ZK tick time */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public static final int DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS = 300;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  /** Default value for ZooKeeper session timeout */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.233"></a>
+<span class="sourceLineNo">222</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * connections<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  /** Parameter name for the ZK data directory */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.233"></a>
 <span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  /** Parameter name for port region server listens on. */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /** Default port region server listens on. */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  /** default port for region server web api */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  /** A configuration key for regionserver info port */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    "hbase.regionserver.info.port";<a name="line.246"></a>
+<span class="sourceLineNo">235</span>  /** Parameter name for the ZK tick time */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public static final int DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS = 300;<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  /** Default value for ZooKeeper session timeout */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  /** Parameter name for what region server implementation to use. */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /** Parameter name for what master implementation to use. */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /** Parameter name for how often threads should wake up */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<a name="line.259"></a>
+<span class="sourceLineNo">248</span>  /** Parameter name for port region server listens on. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  /** Default port region server listens on. */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /** default port for region server web api */<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  /** A configuration key for regionserver info port */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    "hbase.regionserver.info.port";<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /** Default value for thread wake frequency */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<a name="line.272"></a>
+<span class="sourceLineNo">261</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /** Parameter name for what region server implementation to use. */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  /** Parameter name for what master implementation to use. */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>  /** Parameter name for how often threads should wake up */<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<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>   * Parameter name and default value for major compaction jitter.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * to cause compaction to occur a given amount of time either side of<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  /** Parameter name for HBase instance root directory */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  /** Parameter name for HBase client IPC pool type */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /** Parameter name for HBase client IPC pool size */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.295"></a>
+<span class="sourceLineNo">274</span>  /** Default value for thread wake frequency */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<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>   * Parameter name and default value for major compaction jitter.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * to cause compaction to occur a given amount of time either side of<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.295"></a>
 <span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>  /** Parameter name for HBase client operation timeout. */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /** Parameter name for HBase client operation timeout. */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    "hbase.client.meta.operation.timeout";<a name="line.302"></a>
+<span class="sourceLineNo">297</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  /** Parameter name for HBase instance root directory */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.305"></a>
+<span class="sourceLineNo">304</span>  /** Parameter name for HBase client IPC pool type */<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>  /** Used to construct the name of the log directory for a region server */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.315"></a>
+<span class="sourceLineNo">307</span>  /** Parameter name for HBase client IPC pool size */<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Parameter name for HBase client operation timeout. */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  /** Parameter name for HBase client operation timeout. */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    "hbase.client.meta.operation.timeout";<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.318"></a>
 <span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /** Staging dir used by bulk load */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  /** Used by HBCK to sideline backup data */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /** Any artifacts left from migration can be moved here */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /** Conf key for the max file size after which we split the region */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      "hbase.hregion.max.filesize";<a name="line.339"></a>
+<span class="sourceLineNo">320</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  /** Used to construct the name of the log directory for a region server */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /** Staging dir used by bulk load */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Default maximum file size */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.342"></a>
+<span class="sourceLineNo">341</span>  /** Used by HBCK to sideline backup data */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<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>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Default max row size (1 Gb).<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<a name="line.352"></a>
+<span class="sourceLineNo">344</span>  /** Any artifacts left from migration can be moved here */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Conf key for the max file size after which we split the region */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      "hbase.hregion.max.filesize";<a name="line.352"></a>
 <span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * The max number of threads used for opening and closing stores or store<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * files in parallel<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    "hbase.hstore.open.and.close.threads.max";<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>   * The default number for the max number of threads used for opening and<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * closing stores or store files in parallel<a name="line.363"></a>
+<span class="sourceLineNo">354</span>  /** Default maximum file size */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<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>   * Default max row size (1 Gb).<a name="line.363"></a>
 <span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.365"></a>
+<span class="sourceLineNo">365</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<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>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * runaway memstore during spikes in update traffic.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.376"></a>
+<span class="sourceLineNo">368</span>   * The max number of threads used for opening and closing stores or store<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * files in parallel<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    "hbase.hstore.open.and.close.threads.max";<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * The default number for the max number of threads used for opening and<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * closing stores or store files in parallel<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.378"></a>
+<span class="sourceLineNo">378</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.378"></a>
 <span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      "hbase.hregion.memstore.flush.size";<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      false;<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.391"></a>
+<span class="sourceLineNo">380</span>  /**<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * runaway memstore during spikes in update traffic.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  /** name of the file for unique cluster ID */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /** Default value for cluster ID */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // Always store the location of the root table's HRegion.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  // This HRegion is never split.<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  // Do we ever need to know all the information that we are storing?<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // "." (and since no other table name can start with either of these<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // should go down.<a name="line.422"></a>
+<span class="sourceLineNo">393</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      "hbase.hregion.memstore.flush.size";<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      false;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  /** name of the file for unique cluster ID */<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  /** Default value for cluster ID */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // Always store the location of the root table's HRegion.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  // This HRegion is never split.<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // Do we ever need to know all the information that we are storing?<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /** delimiter used between portions of a region name */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  /** The catalog family as a string*/<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /** The catalog family */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /** The RegionInfo qualifier as a string */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>  /** The regioninfo column qualifier */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /** The server column qualifier */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  /** The server column qualifier */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /** The startcode column qualifier */<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /** The startcode column qualifier */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.449"></a>
+<span class="sourceLineNo">424</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  // "." (and since no other table name can start with either of these<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // should go down.<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  /** delimiter used between portions of a region name */<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  /** The catalog family as a string*/<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /** The catalog family */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /** The RegionInfo qualifier as a string */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  /** The open seqnum column qualifier */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  /** The open seqnum column qualifier */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>  /** The state column qualifier */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.457"></a>
+<span class="sourceLineNo">451</span>  /** The regioninfo column qualifier */<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>  /** The server column qualifier */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /** The server column qualifier */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.457"></a>
 <span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * The serverName column qualifier. Its the server where the region is<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * transitioning on, while column server is the server where the region is<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /** The lower-half split region column qualifier */<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  /** The upper-half split region column qualifier */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /** The lower-half merge region column qualifier */<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /** The upper-half merge region column qualifier */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /** The catalog family as a string*/<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /** The catalog family */<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  /** The serialized table state qualifier */<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>  /** The replication barrier family as a string*/<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  /** The replication barrier family */<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<a name="line.496"></a>
+<span class="sourceLineNo">459</span>  /** The startcode column qualifier */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  /** The startcode column qualifier */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>  /** The open seqnum column qualifier */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  /** The open seqnum column qualifier */<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /** The state column qualifier */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>  /**<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * The serverName column qualifier. Its the server where the region is<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * transitioning on, while column server is the server where the region is<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  /** The lower-half split region column qualifier */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /** The upper-half split region column qualifier */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /** The lower-half merge region column qualifier */<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span>  /** The upper-half merge region column qualifier */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /** The catalog family as a string*/<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * The meta table version column qualifier.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * table: i.e. in the 'info:v' column.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  /**<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * The current version of the meta table.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * byte[] serialization from Writables to Protobuf.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * See HRegionInfo.VERSION<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  public static final short META_VERSION = 1;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // Other constants<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>   * An empty instance.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * Last row in a table.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    * table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * Max length a row can have because of the limitation in TFile.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   *<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * to refer to the latest.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * On server side, this acts as a notation.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * (1) For a cell of Put, which has this notation,<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   *     its timestamp will be replaced with server's current time.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * (2) For a cell of Delete, which has this notation,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *           gets.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   *<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   */<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>  /**<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * a client.<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  @Deprecated<a name="line.580"></a>
-<span class="sourceLineNo">581</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>  /**<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * LATEST_TIMESTAMP in bytes form<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    // big-endian<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    (byte) LATEST_TIMESTAMP,<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  };<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  /**<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * Define for 'return-all-versions'.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   */<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Unlimited time-to-live.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>//  public static final int FOREVER = -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  public static final int FOREVER = Integer.MAX_VALUE;<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * Seconds in a day, hour and minute<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  public static final int DAY_IN_SECONDS = 24 * 60 * 60;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public static final int HOUR_IN_SECONDS = 60 * 60;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public static final int MINUTE_IN_SECONDS = 60;<a name="line.614"></a>
+<span class="sourceLineNo">498</span>  /** The catalog family */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>  /** The serialized table state qualifier */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  /** The replication barrier family as a string*/<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** The replication barrier family */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<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>   * The meta table version column qualifier.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * table: i.e. in the 'info:v' column.<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<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>   * The current version of the meta table.<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * byte[] serialization from Writables to Protobuf.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * See HRegionInfo.VERSION<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public static final short META_VERSION = 1;<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  // Other constants<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * An empty instance.<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
+<span class="sourceLineNo">535</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<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>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<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>   * Last row in a table.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    * table<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  /**<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * Max length a row can have because of the limitation in TFile.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   */<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   *<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   * to refer to the latest.<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   * On server side, this acts as a notation.<a name="line.565"></a>
+<span class="sourceLineNo">566</span>   * (1) For a cell of Put, which has this notation,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>   *     its timestamp will be replaced with server's current time.<a name="line.567"></a>
+<span class="sourceLineNo">568</span>   * (2) For a cell of Delete, which has this notation,<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   *           gets.<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<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>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * a client.<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  @Deprecated<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  /**<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * LATEST_TIMESTAMP in bytes form<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // big-endian<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    (byte) LATEST_TIMESTAMP,<a name="line.608"></a>
+<span class="sourceLineNo">609</span>  };<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>  /**<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   * Define for 'return-all-versions'.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.614"></a>
 <span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  //TODO: although the following are referenced widely to format strings for<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  //      the shell. They really aren't a part of the public API. It would be<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  //      nice if we could put them somewhere where they did not need to be<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  //      public. They could have package visibility<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public static final String NAME = "NAME";<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  public static final String VERSIONS = "VERSIONS";<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public static final String IN_MEMORY = "IN_MEMORY";<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public static final String METADATA = "METADATA";<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public static final String CONFIGURATION = "CONFIGURATION";<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>   * Retrying we multiply hbase.client.pause setting by what we have in this array until we<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * run out of array items.  Retries beyond this use the last number in the array.  So, for<a name="line.628"></a>
-<span clas

<TRUNCATED>

[38/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
index bef3b8b..2f28172 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/zookeeper/MiniZooKeeperCluster.html
@@ -246,7 +246,7 @@
 <span class="sourceLineNo">238</span>          standaloneServerFactory.configure(<a name="line.238"></a>
 <span class="sourceLineNo">239</span>            new InetSocketAddress(currentClientPort),<a name="line.239"></a>
 <span class="sourceLineNo">240</span>            configuration.getInt(HConstants.ZOOKEEPER_MAX_CLIENT_CNXNS,<a name="line.240"></a>
-<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
+<span class="sourceLineNo">241</span>                    HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS));<a name="line.241"></a>
 <span class="sourceLineNo">242</span>        } catch (BindException e) {<a name="line.242"></a>
 <span class="sourceLineNo">243</span>          LOG.debug("Failed binding ZK Server to client port: " +<a name="line.243"></a>
 <span class="sourceLineNo">244</span>              currentClientPort, e);<a name="line.244"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 04d2890..65fc352 100644
--- a/book.html
+++ b/book.html
@@ -37004,7 +37004,7 @@ The server will return cellblocks compressed using this same compressor as long
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-03-28 14:29:55 UTC
+Last updated 2018-03-29 14:29:59 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index a1f7dab..535a7ea 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -296,7 +296,7 @@ under the License. -->
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index 17d273e..e08acf5 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Checkstyle Results</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -271,7 +271,7 @@
 <th><img src="images/icon_warning_sml.gif" alt="" />&#160;Warnings</th>
 <th><img src="images/icon_error_sml.gif" alt="" />&#160;Errors</th></tr>
 <tr class="b">
-<td>3595</td>
+<td>3599</td>
 <td>0</td>
 <td>0</td>
 <td>15919</td></tr></table></div>
@@ -10317,12 +10317,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>798</td>
+<td>784</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_javadoc.html#NonEmptyAtclauseDescription">NonEmptyAtclauseDescription</a></td>
-<td>3835</td>
+<td>3849</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>misc</td>
@@ -14531,7 +14531,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 26 has parse error. Missed HTML close tag 'arg'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>44</td></tr></table></div>
 <div class="section">
@@ -15167,7 +15167,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 4 has parse error. Missed HTML close tag 'pre'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>59</td></tr></table></div>
 <div class="section">
@@ -16934,7 +16934,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 19 has parse error. Details: no viable alternative at input '&lt;code&gt;\n   *   List&lt;Future&lt;' while parsing HTML_TAG</td>
 <td>167</td></tr></table></div>
 <div class="section">
@@ -19856,7 +19856,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>83</td></tr>
 <tr class="b">
@@ -33869,7 +33869,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 37 has parse error. Details: no viable alternative at input '&lt;ColumnFamily,' while parsing HTML_ELEMENT</td>
 <td>29</td></tr></table></div>
 <div class="section">
@@ -50186,7 +50186,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 24 has parse error. Details: no viable alternative at input '&lt;key,' while parsing HTML_ELEMENT</td>
 <td>25</td></tr>
 <tr class="a">
@@ -53774,7 +53774,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 2 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>587</td></tr>
 <tr class="b">
@@ -61618,961 +61618,961 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
-<td>431</td></tr>
+<td>437</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 7, expected level should be 6.</td>
-<td>434</td></tr>
+<td>440</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def' child have incorrect indentation level 7, expected level should be 6.</td>
-<td>435</td></tr>
+<td>441</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>445</td></tr>
+<td>451</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 105).</td>
-<td>447</td></tr>
+<td>453</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 109).</td>
-<td>448</td></tr>
+<td>454</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>450</td></tr>
+<td>456</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 118).</td>
-<td>451</td></tr>
+<td>457</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 120).</td>
-<td>452</td></tr>
+<td>458</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>453</td></tr>
+<td>459</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 115).</td>
-<td>457</td></tr>
+<td>463</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 104).</td>
-<td>486</td></tr>
+<td>492</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 114).</td>
-<td>629</td></tr>
+<td>637</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 131).</td>
-<td>643</td></tr>
+<td>651</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>755</td></tr>
+<td>780</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>MethodLength</td>
 <td>Method length is 195 lines (max allowed is 150).</td>
-<td>786</td></tr>
+<td>811</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1131</td></tr>
+<td>1156</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1133</td></tr>
+<td>1158</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1135</td></tr>
+<td>1160</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1137</td></tr>
+<td>1162</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1139</td></tr>
+<td>1164</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1147</td></tr>
+<td>1172</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1148</td></tr>
+<td>1173</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1153</td></tr>
+<td>1178</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 3, expected level should be 4.</td>
-<td>1154</td></tr>
+<td>1179</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>1355</td></tr>
+<td>1380</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>1377</td></tr>
+<td>1402</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>1394</td></tr>
+<td>1419</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>1429</td></tr>
+<td>1454</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
-<td>1573</td></tr>
+<td>1598</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
 <td>'(' is preceded with whitespace.</td>
-<td>1577</td></tr>
+<td>1602</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1589</td></tr>
+<td>1614</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1591</td></tr>
+<td>1616</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1593</td></tr>
+<td>1618</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1596</td></tr>
+<td>1621</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1599</td></tr>
+<td>1624</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1600</td></tr>
+<td>1625</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1602</td></tr>
+<td>1627</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1604</td></tr>
+<td>1629</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1605</td></tr>
+<td>1630</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1606</td></tr>
+<td>1631</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1616</td></tr>
+<td>1641</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1618</td></tr>
+<td>1643</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1619</td></tr>
+<td>1644</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1622</td></tr>
+<td>1647</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1623</td></tr>
+<td>1648</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 modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1625</td></tr>
+<td>1650</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1627</td></tr>
+<td>1652</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1628</td></tr>
+<td>1653</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1629</td></tr>
+<td>1654</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 116).</td>
-<td>1648</td></tr>
+<td>1673</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 105).</td>
-<td>1650</td></tr>
+<td>1675</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 modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1741</td></tr>
+<td>1766</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1743</td></tr>
+<td>1768</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1745</td></tr>
+<td>1770</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1752</td></tr>
+<td>1777</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1753</td></tr>
+<td>1778</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1755</td></tr>
+<td>1780</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1757</td></tr>
+<td>1782</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1758</td></tr>
+<td>1783</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 modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1760</td></tr>
+<td>1785</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>1762</td></tr>
+<td>1787</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>1763</td></tr>
+<td>1788</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'object def rcurly' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>1764</td></tr>
+<td>1789</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>1794</td></tr>
+<td>1819</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>2045</td></tr>
+<td>2070</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>2053</td></tr>
+<td>2078</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>2060</td></tr>
+<td>2085</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>2068</td></tr>
+<td>2093</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2091</td></tr>
+<td>2116</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2093</td></tr>
+<td>2118</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2095</td></tr>
+<td>2120</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2101</td></tr>
+<td>2126</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2102</td></tr>
+<td>2127</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2104</td></tr>
+<td>2129</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2106</td></tr>
+<td>2131</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2107</td></tr>
+<td>2132</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2109</td></tr>
+<td>2134</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2111</td></tr>
+<td>2136</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2112</td></tr>
+<td>2137</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2113</td></tr>
+<td>2138</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2126</td></tr>
+<td>2151</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2128</td></tr>
+<td>2153</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2130</td></tr>
+<td>2155</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2131</td></tr>
+<td>2156</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2132</td></tr>
+<td>2157</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2134</td></tr>
+<td>2159</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2136</td></tr>
+<td>2161</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2137</td></tr>
+<td>2162</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2139</td></tr>
+<td>2164</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2141</td></tr>
+<td>2166</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2142</td></tr>
+<td>2167</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2143</td></tr>
+<td>2168</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2224</td></tr>
+<td>2249</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2226</td></tr>
+<td>2251</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2232</td></tr>
+<td>2257</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' have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2233</td></tr>
+<td>2258</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' have incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2234</td></tr>
+<td>2259</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' child have incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2235</td></tr>
+<td>2260</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' have incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2236</td></tr>
+<td>2261</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' child have incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2237</td></tr>
+<td>2262</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' have incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2238</td></tr>
+<td>2263</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' child have incorrect indentation level 16, expected level should be one of the following: 18, 20.</td>
-<td>2239</td></tr>
+<td>2264</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 rcurly' have incorrect indentation level 14, expected level should be one of the following: 16, 18.</td>
-<td>2241</td></tr>
+<td>2266</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' have incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2242</td></tr>
+<td>2267</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 rcurly' have incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2243</td></tr>
+<td>2268</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' child have incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>2244</td></tr>
+<td>2269</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 rcurly' have incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>2245</td></tr>
+<td>2270</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' have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2246</td></tr>
+<td>2271</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2248</td></tr>
+<td>2273</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2255</td></tr>
+<td>2280</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2256</td></tr>
+<td>2281</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2258</td></tr>
+<td>2283</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2260</td></tr>
+<td>2285</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2261</td></tr>
+<td>2286</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2263</td></tr>
+<td>2288</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2265</td></tr>
+<td>2290</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2266</td></tr>
+<td>2291</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2267</td></tr>
+<td>2292</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2277</td></tr>
+<td>2302</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2279</td></tr>
+<td>2304</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2281</td></tr>
+<td>2306</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2291</td></tr>
+<td>2316</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2292</td></tr>
+<td>2317</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2294</td></tr>
+<td>2319</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2296</td></tr>
+<td>2321</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2297</td></tr>
+<td>2322</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2299</td></tr>
+<td>2324</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2301</td></tr>
+<td>2326</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2302</td></tr>
+<td>2327</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2303</td></tr>
+<td>2328</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2347</td></tr>
+<td>2372</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2349</td></tr>
+<td>2374</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2351</td></tr>
+<td>2376</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2357</td></tr>
+<td>2382</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2358</td></tr>
+<td>2383</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2360</td></tr>
+<td>2385</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2362</td></tr>
+<td>2387</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2363</td></tr>
+<td>2388</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2365</td></tr>
+<td>2390</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2367</td></tr>
+<td>2392</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2368</td></tr>
+<td>2393</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2369</td></tr>
+<td>2394</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2383</td></tr>
+<td>2408</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2387</td></tr>
+<td>2412</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2389</td></tr>
+<td>2414</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>2391</td></tr>
+<td>2416</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>2392</td></tr>
+<td>2417</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' have incorrect indentation level 4, expected level should be one of the following: 6, 8.</td>
-<td>2393</td></tr>
+<td>2418</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>MissingSwitchDefault</td>
 <td>switch without &quot;default&quot; clause.</td>
-<td>2430</td></tr>
+<td>2455</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>2874</td></tr>
+<td>2899</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>3048</td></tr>
+<td>3073</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>3050</td></tr>
+<td>3075</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 109).</td>
-<td>3120</td></tr>
+<td>3145</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
-<td>3171</td></tr>
+<td>3196</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>3178</td></tr>
+<td>3203</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>3212</td></tr>
+<td>3237</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 111).</td>
-<td>3310</td></tr>
+<td>3335</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>3456</td></tr>
+<td>3481</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>3506</td></tr></table></div>
+<td>3531</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.HMasterCommandLine.java">org/apache/hadoop/hbase/master/HMasterCommandLine.java</h3>
 <table border="0" class="table table-striped">
@@ -65191,103 +65191,103 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
-<td>112</td></tr>
+<td>113</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
-<td>114</td></tr>
+<td>115</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' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
-<td>115</td></tr>
+<td>116</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
-<td>117</td></tr>
+<td>118</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be one of the following: 12, 14.</td>
-<td>119</td></tr>
+<td>120</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' have incorrect indentation level 6, expected level should be one of the following: 10, 12.</td>
-<td>120</td></tr>
+<td>121</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' have incorrect indentation level 4, expected level should be one of the following: 8, 10.</td>
-<td>121</td></tr>
+<td>122</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>128</td></tr>
+<td>129</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>129</td></tr>
+<td>130</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>130</td></tr>
+<td>131</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>145</td></tr>
+<td>146</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>146</td></tr>
+<td>147</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>147</td></tr>
+<td>148</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>148</td></tr>
+<td>149</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>189</td></tr>
+<td>190</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
-<td>230</td></tr>
+<td>231</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'while' construct must use '{}'s.</td>
-<td>311</td></tr></table></div>
+<td>312</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.master.TestMasterOperationsForRegionReplicas.java">org/apache/hadoop/hbase/master/TestMasterOperationsForRegionReplicas.java</h3>
 <table border="0" class="table table-striped">
@@ -73532,7 +73532,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 60 has parse error. Missed HTML close tag 'Comparable'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>29</td></tr>
 <tr class="b">
@@ -77720,7 +77720,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 0 has parse error. Unrecognized error from ANTLR parser: null</td>
 <td>74</td></tr>
 <tr class="a">
@@ -81535,517 +81535,517 @@
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
-<td>767</td></tr>
+<td>769</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>776</td></tr>
+<td>778</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>789</td></tr>
+<td>798</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>790</td></tr>
+<td>799</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>795</td></tr>
+<td>804</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>810</td></tr>
+<td>819</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>902</td></tr>
+<td>911</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 229 lines (max allowed is 150).</td>
-<td>925</td></tr>
+<td>Method length is 230 lines (max allowed is 150).</td>
+<td>934</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>1023</td></tr>
+<td>1032</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>1047</td></tr>
+<td>1056</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>1048</td></tr>
+<td>1057</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>1049</td></tr>
+<td>1058</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>1050</td></tr>
+<td>1059</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>1051</td></tr>
+<td>1060</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>1052</td></tr>
+<td>1061</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>1053</td></tr>
+<td>1062</td></tr>
 <tr class="b">
 <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>1070</td></tr>
+<td>1079</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>1083</td></tr>
+<td>1092</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>1161</td></tr>
+<td>1171</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>1376</td></tr>
+<td>1386</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'initialCountPercentage' have incorrect indentation level 6, expected level should be 8.</td>
-<td>1582</td></tr>
+<td>1592</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>1684</td></tr>
+<td>1694</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 call' child have incorrect indentation level 16, expected level should be 18.</td>
-<td>1741</td></tr>
+<td>1751</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>1770</td></tr>
+<td>1780</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>1825</td></tr>
+<td>1835</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'HConstants' have incorrect indentation level 6, expected level should be 8.</td>
-<td>1877</td></tr>
+<td>1887</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'conf' have incorrect indentation level 4, expected level should be 6.</td>
-<td>1891</td></tr>
+<td>1901</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'&quot;hbase.regionserver.wal.max.splitters&quot;' have incorrect indentation level 4, expected level should be 6.</td>
-<td>1912</td></tr>
+<td>1922</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 call' child have incorrect indentation level 4, expected level should be 6.</td>
-<td>1925</td></tr>
+<td>1935</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>1930</td></tr>
+<td>1940</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>1931</td></tr>
+<td>1941</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>1932</td></tr>
+<td>1942</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>1933</td></tr>
+<td>1943</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>1934</td></tr>
+<td>1944</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>1935</td></tr>
+<td>1945</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>1936</td></tr>
+<td>1946</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 call' child have incorrect indentation level 4, expected level should be 6.</td>
-<td>1941</td></tr>
+<td>1951</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>2025</td></tr>
+<td>2035</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>2038</td></tr>
+<td>2048</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>2296</td></tr>
+<td>2306</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>2429</td></tr>
+<td>2439</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>2430</td></tr>
+<td>2440</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>2431</td></tr>
+<td>2441</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>2432</td></tr>
+<td>2442</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>2433</td></tr>
+<td>2443</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>2434</td></tr>
+<td>2444</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>2435</td></tr>
+<td>2445</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>2436</td></tr>
+<td>2446</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>2451</td></tr>
+<td>2461</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>2467</td></tr>
+<td>2477</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>2476</td></tr>
+<td>2486</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>2574</td></tr>
+<td>2584</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>2588</td></tr>
+<td>2598</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>2590</td></tr>
+<td>2600</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>2677</td></tr>
+<td>2687</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>2682</td></tr>
+<td>2692</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>2988</td></tr>
+<td>2998</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>2989</td></tr>
+<td>2999</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>3026</td></tr>
+<td>3036</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 5, expected level should be 4.</td>
-<td>3031</td></tr>
+<td>3041</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'synchronized' have incorrect indentation level 5, expected level should be 4.</td>
-<td>3032</td></tr>
+<td>3042</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' have incorrect indentation level 7, expected level should be 6.</td>
-<td>3033</td></tr>
+<td>3043</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 have incorrect indentation level 9, expected level should be 8.</td>
-<td>3034</td></tr>
+<td>3044</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' have incorrect indentation level 9, expected level should be 8.</td>
-<td>3035</td></tr>
+<td>3045</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 have incorrect indentation level 11, expected level should be 10.</td>
-<td>3036</td></tr>
+<td>3046</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' have incorrect indentation level 9, expected level should be 8.</td>
-<td>3037</td></tr>
+<td>3047</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' have incorrect indentation level 7, expected level should be 6.</td>
-<td>3038</td></tr>
+<td>3048</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'synchronized rcurly' have incorrect indentation level 5, expected level should be 4.</td>
-<td>3039</td></tr>
+<td>3049</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 5, expected level should be 4.</td>
-<td>3040</td></tr>
+<td>3050</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' have incorrect indentation level 3, expected level should be 2.</td>
-<td>3041</td></tr>
+<td>3051</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>3192</td></tr>
+<td>3202</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>3225</td></tr>
+<td>3235</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>3252</td></tr>
+<td>3262</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>3266</td></tr>
+<td>3276</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>3374</td></tr>
+<td>3384</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'ctor def rcurly' have incorrect indentation level 5, expected level should be 4.</td>
-<td>3396</td></tr>
+<td>3406</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child have incorrect indentation level 8, expected level should be 4.</td>
-<td>3468</td></tr>
+<td>3478</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 48 should have line break after.</td>
-<td>3489</td></tr>
+<td>3499</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
-<td>3490</td></tr>
+<td>3500</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 105).</td>
-<td>3537</td></tr>
+<td>3547</td></tr>
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>3557</td></tr>
+<td>3567</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' have incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>3559</td></tr>
+<td>3569</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 have incorrect indentation level 12, expected level should be one of the following: 14, 16.</td>
-<td>3560</td></tr>
+<td>3570</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' have incorrect indentation level 10, expected level should be one of the following: 12, 14.</td>
-<td>3561</td></tr>
+<td>3571</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' have incorrect indentation level 8, expected level should be one of the following: 10, 12.</td>
-<td>3562</td></tr>
+<td>3572</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' have incorrect indentation level 6, expected level should be one of the following: 8, 10.</td>
-<td>3563</td></tr></table></div>
+<td>3573</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.regionserver.HRegionServerCommandLine.java">org/apache/hadoop/hbase/regionserver/HRegionServerCommandLine.java</h3>
 <table border="0" class="table table-striped">
@@ -87716,7 +87716,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 33 has parse error. Missed HTML close tag 'number'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>127</td></tr>
 <tr class="a">
@@ -95269,73 +95269,73 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' have incorrect indentation level 3, expected level should be 2.</td>
-<td>149</td></tr>
+<td>153</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>164</td></tr>
+<td>168</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>331</td></tr>
+<td>335</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>332</td></tr>
+<td>336</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>347</td></tr>
+<td>351</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>348</td></tr>
+<td>352</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>349</td></tr>
+<td>353</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>350</td></tr>
+<td>354</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 106).</td>
-<td>353</td></tr>
+<td>357</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>391</td></tr>
+<td>395</td></tr>
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>coding</td>
 <td>InnerAssignment</td>
 <td>Inner assignments should be avoided.</td>
-<td>427</td></tr>
+<td>431</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>437</td></tr></table></div>
+<td>441</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.replication.regionserver.ReplicationSourceFactory.java">org/apache/hadoop/hbase/replication/regionserver/ReplicationSourceFactory.java</h3>
 <table border="0" class="table table-striped">
@@ -116273,7 +116273,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 23 has parse error. Details: no viable alternative at input '&lt;expected,' while parsing HTML_ELEMENT</td>
 <td>143</td></tr>
 <tr class="a">
@@ -116477,7 +116477,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 78 has parse error. Details: no viable alternative at input '&lt;Object&gt;, Map&lt;String,' while parsing HTML_TAG</td>
 <td>33</td></tr>
 <tr class="a">
@@ -117077,7 +117077,7 @@
 <tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 35 has parse error. Missed HTML close tag 'index'. Sometimes it means that close tag missed for one of previous tags.</td>
 <td>796</td></tr>
 <tr class="b">
@@ -120884,7 +120884,7 @@
 <tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
-<td>JavadocTagContinuationIndentation</td>
+<td>NonEmptyAtclauseDescription</td>
 <td>Javadoc comment at column 58 has parse error. Details: no viable alternative at input '&lt;byte[' while parsing HTML_ELEMENT</td>
 <td>426</td></tr>
 <tr class="a">
@@ -123136,7 +123136,7 @@
 <td>indentation</td>
 <td>Indentation</td>
 <td>'lambda arguments' have incorrect indentation level 12, expected level should be 10.</td>
-<td>264</td></tr></table></div>
+<td>270</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.zookeeper.TestMetricsZooKeeperSourceImpl.java">org/apache/hadoop/hbase/zookeeper/TestMetricsZooKeeperSourceImpl.java</h3>
 <table border="0" class="table table-striped">
@@ -123181,19 +123181,19 @@
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
-<td>117</td></tr>
+<td>118</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>186</td></tr>
+<td>187</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>188</td></tr></table></div>
+<td>189</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.zookeeper.ZKMainServer.java">org/apache/hadoop/hbase/zookeeper/ZKMainServer.java</h3>
 <table border="0" class="table table-striped">
@@ -123274,7 +123274,7 @@
 <td>coding</td>
 <td>MissingSwitchDefault</td>
 <td>switch without &quot;default&quot; clause.</td>
-<td>448</td></tr></table></div>
+<td>483</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.zookeeper.ZNodePaths.java">org/apache/hadoop/hbase/zookeeper/ZNodePaths.java</h3>
 <table border="0" class="table table-striped">
@@ -123737,7 +123737,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 2359974..56f83e5 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,7 +25,7 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3595,
+      <title>File: 3599,
              Errors: 15919,
              Warnings: 0,
              Infos: 0
@@ -3140,6 +3140,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer.java">org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.metrics.impl.DropwizardMeter.java">org/apache/hadoop/hbase/metrics/impl/DropwizardMeter.java</a>
                 </td>
                 <td>
@@ -13220,6 +13234,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer.java">org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.RegionLocations.java">org/apache/hadoop/hbase/RegionLocations.java</a>
                 </td>
                 <td>
@@ -25596,6 +25624,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.client.TestSeparateClientZKCluster.java">org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.coprocessor.TestRegionObserverBypass.java">org/apache/hadoop/hbase/coprocessor/TestRegionObserverBypass.java</a>
                 </td>
                 <td>
@@ -46232,6 +46274,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer.java">org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.java</a>
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+                <td>
+                  0
+                </td>
+              </tr>
+                          <tr>
+                <td>
                   <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.rest.model.TestRowModel.java">org/apache/hadoop/hbase/rest/model/TestRowModel.java</a>
                 </td>
                 <td>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 77f8b3c..9062c47 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -365,7 +365,7 @@ email to <a class="externalLink" href="mailto:private@hbase.apache.org">the priv
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index 8b07515..b3b1b6d 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="20180328" />
+    <meta name="Date-Revision-yyyymmdd" content="20180329" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Project Dependencies</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -430,7 +430,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-03-28</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-03-29</li>
             </p>
                 </div>
 


[19/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
index c8b113b..a97dfdc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -146,3486 +146,3511 @@
 <span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
 <span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.zookeeper.KeeperException;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.eclipse.jetty.server.Server;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.slf4j.Logger;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.slf4j.LoggerFactory;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>/**<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * run the cluster.  All others park themselves in their constructor until<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.224"></a>
-<span class="sourceLineNo">225</span> *<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.230"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * run the cluster.  All others park themselves in their constructor until<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> *<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.230"></a>
 <span class="sourceLineNo">231</span> *<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * @see org.apache.zookeeper.Watcher<a name="line.232"></a>
-<span class="sourceLineNo">233</span> */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@SuppressWarnings("deprecation")<a name="line.235"></a>
-<span class="sourceLineNo">236</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private static class InitializationMonitor extends HasThread {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     * true, do nothing otherwise.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public static final boolean HALT_DEFAULT = false;<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    private final HMaster master;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    private final long timeout;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    private final boolean haltOnTimeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    InitializationMonitor(HMaster master) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      super("MasterInitializationMonitor");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.master = master;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.setDaemon(true);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public void run() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          Thread.sleep(timeout);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          if (master.isInitialized()) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } else {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.276"></a>
-<span class="sourceLineNo">277</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            if (haltOnTimeout) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.280"></a>
-<span class="sourceLineNo">281</span>              System.exit(-1);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } catch (InterruptedException ie) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  //instance into web context.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  public static final String MASTER = "master";<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Manager and zk listener for master election<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private final ActiveMasterManager activeMasterManager;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  // Region server tracker<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  RegionServerTracker regionServerTracker;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Draining region server tracker<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private DrainingServerTracker drainingServerTracker;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Tracker for load balancer state<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Tracker for split and merge state<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for region normalizer state<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.308"></a>
+<span class="sourceLineNo">232</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * @see org.apache.zookeeper.Watcher<a name="line.234"></a>
+<span class="sourceLineNo">235</span> */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>@SuppressWarnings("deprecation")<a name="line.237"></a>
+<span class="sourceLineNo">238</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private static class InitializationMonitor extends HasThread {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.251"></a>
+<span class="sourceLineNo">252</span>     * true, do nothing otherwise.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>     */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public static final boolean HALT_DEFAULT = false;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    private final HMaster master;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    private final long timeout;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private final boolean haltOnTimeout;<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    InitializationMonitor(HMaster master) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super("MasterInitializationMonitor");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      this.master = master;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.setDaemon(true);<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>    @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public void run() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Thread.sleep(timeout);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          if (master.isInitialized()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          } else {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>            if (haltOnTimeout) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              System.exit(-1);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      } catch (InterruptedException ie) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  //instance into web context.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final String MASTER = "master";<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  // Manager and zk listener for master election<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private final ActiveMasterManager activeMasterManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  // Region server tracker<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  RegionServerTracker regionServerTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  // Draining region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private DrainingServerTracker drainingServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  // Tracker for load balancer state<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  //Tracker for master maintenance mode setting<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  // Tracker for split and merge state<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.311"></a>
 <span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private ClusterSchemaService clusterSchemaService;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    "hbase.master.wait.on.service.seconds";<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.317"></a>
+<span class="sourceLineNo">313</span>  // Tracker for region normalizer state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  //Tracker for master maintenance mode setting<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Metrics for the HMaster<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  final MetricsMaster metricsMaster;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  // file system manager for the master FS operations<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private MasterFileSystem fileSystemManager;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private MasterWalManager walManager;<a name="line.323"></a>
+<span class="sourceLineNo">319</span>  private ClusterSchemaService clusterSchemaService;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    "hbase.master.wait.on.service.seconds";<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // server manager to deal with region server info<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private volatile ServerManager serverManager;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // manager of assignment nodes in zookeeper<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private AssignmentManager assignmentManager;<a name="line.329"></a>
+<span class="sourceLineNo">325</span>  // Metrics for the HMaster<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  final MetricsMaster metricsMaster;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // file system manager for the master FS operations<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private MasterFileSystem fileSystemManager;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private MasterWalManager walManager;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // manager of replication<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  // server manager to deal with region server info<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private volatile ServerManager serverManager;<a name="line.332"></a>
 <span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // buffer for "fatal error" notices from region servers<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  // in the cluster. This is only used for assisting<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // operations/debugging.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // flag set after we become the active master (used for testing)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private volatile boolean activeMaster = false;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // flag set after we complete initialization once active<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.343"></a>
+<span class="sourceLineNo">334</span>  // manager of assignment nodes in zookeeper<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  private AssignmentManager assignmentManager;<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // manager of replication<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // buffer for "fatal error" notices from region servers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // in the cluster. This is only used for assisting<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // operations/debugging.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  // flag set after master services are started,<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // initialization may have not completed yet.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  volatile boolean serviceStarted = false;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // flag set after we complete assignMeta.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // Maximum time we should run balancer for<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private final int maxBlancingTime;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // Maximum percent of regions in transition when balancing<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private final double maxRitPercent;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final LockManager lockManager = new LockManager(this);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private LoadBalancer balancer;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private RegionNormalizer normalizer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private BalancerChore balancerChore;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private RegionNormalizerChore normalizerChore;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private ClusterStatusChore clusterStatusChore;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  CatalogJanitor catalogJanitorChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private LogCleaner logCleaner;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private HFileCleaner hfileCleaner;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private MobCompactionChore mobCompactChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // used to synchronize the mobCompactionStates<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  // save the information of mob compactions in tables.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  MasterCoprocessorHost cpHost;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private final boolean preLoadTableDescriptors;<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  // Time stamps for when a hmaster became active<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private long masterActiveTime;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private long masterFinishedInitializationTime;<a name="line.388"></a>
+<span class="sourceLineNo">345</span>  // flag set after we become the active master (used for testing)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private volatile boolean activeMaster = false;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // flag set after we complete initialization once active<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // flag set after master services are started,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  // initialization may have not completed yet.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  volatile boolean serviceStarted = false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // flag set after we complete assignMeta.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // Maximum time we should run balancer for<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private final int maxBlancingTime;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // Maximum percent of regions in transition when balancing<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final double maxRitPercent;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private final LockManager lockManager = new LockManager(this);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private LoadBalancer balancer;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private RegionNormalizer normalizer;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private BalancerChore balancerChore;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private RegionNormalizerChore normalizerChore;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ClusterStatusChore clusterStatusChore;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  CatalogJanitor catalogJanitorChore;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  private LogCleaner logCleaner;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private HFileCleaner hfileCleaner;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private MobCompactionChore mobCompactChore;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  // used to synchronize the mobCompactionStates<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // save the information of mob compactions in tables.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  MasterCoprocessorHost cpHost;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private final boolean preLoadTableDescriptors;<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final boolean masterCheckCompression;<a name="line.391"></a>
+<span class="sourceLineNo">390</span>  // Time stamps for when a hmaster became active<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private long masterActiveTime;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  //should we check encryption settings at master side, default true<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final boolean masterCheckEncryption;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private long masterFinishedInitializationTime;<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // monitor for snapshot of hbase tables<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  SnapshotManager snapshotManager;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // monitor for distributed procedures<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private MasterProcedureManagerHost mpmHost;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private volatile MasterQuotaManager quotaManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  private QuotaObserverChore quotaObserverChore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.407"></a>
+<span class="sourceLineNo">396</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final boolean masterCheckCompression;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  //should we check encryption settings at master side, default true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private final boolean masterCheckEncryption;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  // monitor for snapshot of hbase tables<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  SnapshotManager snapshotManager;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // monitor for distributed procedures<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private MasterProcedureManagerHost mpmHost;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private WALProcedureStore procedureStore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // handle table states<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private TableStateManager tableStateManager;<a name="line.413"></a>
+<span class="sourceLineNo">409</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private volatile MasterQuotaManager quotaManager;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private QuotaObserverChore quotaObserverChore;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.413"></a>
 <span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  private long splitPlanCount;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  private long mergePlanCount;<a name="line.416"></a>
+<span class="sourceLineNo">415</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  private WALProcedureStore procedureStore;<a name="line.416"></a>
 <span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /* Handle favored nodes information */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private FavoredNodesManager favoredNodesManager;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  // handle table states<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private TableStateManager tableStateManager;<a name="line.419"></a>
 <span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private Server masterJettyServer;<a name="line.422"></a>
+<span class="sourceLineNo">421</span>  private long splitPlanCount;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private long mergePlanCount;<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static class RedirectServlet extends HttpServlet {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    private final int regionServerInfoPort;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    private final String regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    /**<a name="line.429"></a>
-<span class="sourceLineNo">430</span>     * @param infoServer that we're trying to send all requests to<a name="line.430"></a>
-<span class="sourceLineNo">431</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       regionServerInfoPort = infoServer.getPort();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       regionServerHostname = hostname;<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>    @Override<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    public void doGet(HttpServletRequest request,<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      String redirectHost = regionServerHostname;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if(redirectHost == null) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        redirectHost = request.getServerName();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.447"></a>
-<span class="sourceLineNo">448</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              "to an appropriate hostname.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String redirectUrl = request.getScheme() + "://"<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        + request.getRequestURI();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      response.sendRedirect(redirectUrl);<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><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Initializes the HMaster. The steps are as follows:<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * &lt;p&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * &lt;ol&gt;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;/ol&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Remaining steps of initialization occur in<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * the master becomes the active one.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public HMaster(final Configuration conf)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      throws IOException, KeeperException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    super(conf);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    TraceUtil.initTracer(conf);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>      // Disable usage of meta replicas in the master<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>      decorateMasterConfiguration(this.conf);<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">424</span>  /* Handle favored nodes information */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private FavoredNodesManager favoredNodesManager;<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private Server masterJettyServer;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static class RedirectServlet extends HttpServlet {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    private final int regionServerInfoPort;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private final String regionServerHostname;<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>     * @param infoServer that we're trying to send all requests to<a name="line.436"></a>
+<span class="sourceLineNo">437</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>     */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       regionServerInfoPort = infoServer.getPort();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       regionServerHostname = hostname;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public void doGet(HttpServletRequest request,<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String redirectHost = regionServerHostname;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      if(redirectHost == null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        redirectHost = request.getServerName();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.453"></a>
+<span class="sourceLineNo">454</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              "to an appropriate hostname.");<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.457"></a>
+<span class="sourceLineNo">458</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          return;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      String redirectUrl = request.getScheme() + "://"<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        + request.getRequestURI();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      response.sendRedirect(redirectUrl);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Initializes the HMaster. The steps are as follows:<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * &lt;p&gt;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * &lt;ol&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;/ol&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Remaining steps of initialization occur in<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * the master becomes the active one.<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public HMaster(final Configuration conf)<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      throws IOException, KeeperException {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    super(conf);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    TraceUtil.initTracer(conf);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>      // Disable usage of meta replicas in the master<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>      decorateMasterConfiguration(this.conf);<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      // should we check encryption settings at master side, default true<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.503"></a>
+<span class="sourceLineNo">499</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // preload table descriptor at startup<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      // Do we publish the status?<a name="line.514"></a>
+<span class="sourceLineNo">505</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>      // should we check encryption settings at master side, default true<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.511"></a>
+<span class="sourceLineNo">512</span><a name="line.512"></a>
+<span class="sourceLineNo">513</span>      // preload table descriptor at startup<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.514"></a>
 <span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              ClusterStatusPublisher.Publisher.class);<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (shouldPublish) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (publisherClass == null) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.525"></a>
-<span class="sourceLineNo">526</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              " is not set - not publishing status");<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        } else {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      } else {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        this.activeMasterManager = null;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } catch (Throwable t) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // cause of failed startup is lost.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      LOG.error("Failed construction of Master", t);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      throw t;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  @Override<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  // block in here until then.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    try {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        try {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          int infoPort = putUpJettyServer();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          startActiveMasterManager(infoPort);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>        } catch (Throwable t) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          // Make sure we log the exception.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          String error = "Failed to become Active Master";<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          LOG.error(error, t);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          // Abort should have been called already.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          if (!isAborted()) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            abort(error, t);<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>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      // the super run call will do this for us.<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      super.run();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    } finally {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      if (this.clusterSchemaService != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        // If on way out, then we are no longer active master.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        this.clusterSchemaService.stopAsync();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        try {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          this.clusterSchemaService.awaitTerminated(<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        } catch (TimeoutException te) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  // return the actual infoPort, -1 means disable info server.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private int putUpJettyServer() throws IOException {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      return -1;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    // -1 is for disabling info server, so no redirecting<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return -1;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if(infoPort == infoServer.getPort()) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return infoPort;<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      String msg =<a name="line.607"></a>
-<span class="sourceLineNo">608</span>          "Failed to 

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
index f845807..1427c4c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html
@@ -132,233 +132,239 @@
 <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>  public ReadOnlyZKClient(Configuration conf) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.retryIntervalMs =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    LOG.info(<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected final String path;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.145"></a>
+<span class="sourceLineNo">127</span>    // We might use a different ZK for client access<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    String clientZkQuorumServers = ZKConfig.getClientZKQuorumServersString(conf);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    if (clientZkQuorumServers != null) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      this.connectString = clientZkQuorumServers;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    this.retryIntervalMs =<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    LOG.info(<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>    private final String operationType;<a name="line.147"></a>
+<span class="sourceLineNo">147</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    private int retries;<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    protected final String path;<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      this.path = path;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.future = future;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.operationType = operationType;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">151</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    private final String operationType;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    private int retries;<a name="line.155"></a>
 <span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      tasks.add(new Task() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>        @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          pendingRequests--;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          Code code = Code.get(rc);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          if (code == Code.OK) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            future.complete(ret);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          } else if (code == Code.NONODE) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>            if (errorIfNoNode) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.168"></a>
-<span class="sourceLineNo">169</span>            } else {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>              future.complete(ret);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          } else {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>              try {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>                zk.close();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>              } catch (InterruptedException e) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>              }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.183"></a>
-<span class="sourceLineNo">184</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              tasks.add(ZKTask.this);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            } else {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.189"></a>
-<span class="sourceLineNo">190</span>            }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>        @Override<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        public void closed(IOException e) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          // fail the request, although it is succeeded actually.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          // response then a failure is always possible.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          future.completeExceptionally(e);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      });<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean needZk() {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return true;<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>    protected abstract void doExec(ZooKeeper zk);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    public final void exec(ZooKeeper zk) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      pendingRequests++;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      doExec(zk);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">157</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.path = path;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.future = future;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      this.operationType = operationType;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      tasks.add(new Task() {<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>        @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          pendingRequests--;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          Code code = Code.get(rc);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          if (code == Code.OK) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            future.complete(ret);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          } else if (code == Code.NONODE) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            if (errorIfNoNode) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            } else {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              future.complete(ret);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                zk.close();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              } catch (InterruptedException e) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>              tasks.add(ZKTask.this);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>            } else {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.193"></a>
+<span class="sourceLineNo">194</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>              future.completeExceptionally(KeeperException.create(code, path));<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><a name="line.199"></a>
+<span class="sourceLineNo">200</span>        @Override<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        public void closed(IOException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          // fail the request, although it is succeeded actually.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.206"></a>
+<span class="sourceLineNo">207</span>          // response then a failure is always possible.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          future.completeExceptionally(e);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      });<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    @Override<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public boolean needZk() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return true;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    protected abstract void doExec(ZooKeeper zk);<a name="line.218"></a>
 <span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (retries &gt;= maxRetries) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      retries++;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return true;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    public void connectFailed(IOException e) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          connectString, operationType, path, retries, e);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        tasks.add(this);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          connectString, operationType, path, retries, e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        future.completeExceptionally(e);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    @Override<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    public void closed(IOException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      future.completeExceptionally(e);<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">220</span>    @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    public final void exec(ZooKeeper zk) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      pendingRequests++;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      doExec(zk);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (retries &gt;= maxRetries) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        return false;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      retries++;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return true;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    @Override<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    public void connectFailed(IOException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          connectString, operationType, path, retries, e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        tasks.add(this);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      } else {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          connectString, operationType, path, retries, e);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        future.completeExceptionally(e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    future.completeExceptionally(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return future;<a name="line.251"></a>
+<span class="sourceLineNo">248</span>    @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    public void closed(IOException e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      future.completeExceptionally(e);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
 <span class="sourceLineNo">252</span>  }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    if (closed.get()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return failed(new IOException("Client already closed"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>      @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      protected void doExec(ZooKeeper zk) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        zk.getData(path, false,<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    });<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return future;<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>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    if (closed.get()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return failed(new IOException("Client already closed"));<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      @Override<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      protected void doExec(ZooKeeper zk) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    });<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return future;<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>  private void closeZk() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    if (zookeeper != null) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        zookeeper.close();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      zookeeper = null;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private ZooKeeper getZk() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // may be closed when session expired<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return zookeeper;<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>  private void run() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    for (;;) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      Task task;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      } catch (InterruptedException e) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (task == CLOSE) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        break;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (task == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        if (pendingRequests == 0) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            getId(), connectString, keepAliveTimeMs);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          closeZk();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        continue;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      if (!task.needZk()) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        task.exec(null);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      } else {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        ZooKeeper zk;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        try {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          zk = getZk();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        } catch (IOException e) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          task.connectFailed(e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          continue;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        task.exec(zk);<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>    closeZk();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    IOException error = new IOException("Client already closed");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    tasks.clear();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void close() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    if (closed.compareAndSet(false, true)) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      tasks.add(CLOSE);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @VisibleForTesting<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public String getConnectString() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return connectString;<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">254</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    future.completeExceptionally(e);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      protected void doExec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.getData(path, false,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    });<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return future;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    if (closed.get()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      return failed(new IOException("Client already closed"));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>      @Override<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      protected void doExec(ZooKeeper zk) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<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 future;<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>  private void closeZk() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    if (zookeeper != null) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      try {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        zookeeper.close();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } catch (InterruptedException e) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      zookeeper = null;<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>  private ZooKeeper getZk() throws IOException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // may be closed when session expired<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return zookeeper;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void run() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    for (;;) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      Task task;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      } catch (InterruptedException e) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        continue;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      if (task == CLOSE) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (task == null) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        if (pendingRequests == 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            getId(), connectString, keepAliveTimeMs);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        continue;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      if (!task.needZk()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        task.exec(null);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        ZooKeeper zk;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          zk = getZk();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          task.connectFailed(e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          continue;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        task.exec(zk);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    closeZk();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    IOException error = new IOException("Client already closed");<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    tasks.clear();<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>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void close() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (closed.compareAndSet(false, true)) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      tasks.add(CLOSE);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @VisibleForTesting<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public String getConnectString() {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return connectString;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>}<a name="line.359"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
index f845807..1427c4c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
@@ -132,233 +132,239 @@
 <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>  public ReadOnlyZKClient(Configuration conf) {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    this.retryIntervalMs =<a name="line.130"></a>
-<span class="sourceLineNo">131</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    LOG.info(<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.134"></a>
-<span class="sourceLineNo">135</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>    protected final String path;<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.145"></a>
+<span class="sourceLineNo">127</span>    // We might use a different ZK for client access<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    String clientZkQuorumServers = ZKConfig.getClientZKQuorumServersString(conf);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    if (clientZkQuorumServers != null) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      this.connectString = clientZkQuorumServers;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    } else {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      this.connectString = ZKConfig.getZKQuorumServersString(conf);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    this.sessionTimeoutMs = conf.getInt(ZK_SESSION_TIMEOUT, DEFAULT_ZK_SESSION_TIMEOUT);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    this.maxRetries = conf.getInt(RECOVERY_RETRY, DEFAULT_RECOVERY_RETRY);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    this.retryIntervalMs =<a name="line.136"></a>
+<span class="sourceLineNo">137</span>        conf.getInt(RECOVERY_RETRY_INTERVAL_MILLIS, DEFAULT_RECOVERY_RETRY_INTERVAL_MILLIS);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    this.keepAliveTimeMs = conf.getInt(KEEPALIVE_MILLIS, DEFAULT_KEEPALIVE_MILLIS);<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    LOG.info(<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      "Connect {} to {} with session timeout={}ms, retries {}, " +<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        "retry interval {}ms, keepAlive={}ms",<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      getId(), connectString, sessionTimeoutMs, maxRetries, retryIntervalMs, keepAliveTimeMs);<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    Threads.setDaemonThreadRunning(new Thread(this::run),<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      "ReadOnlyZKClient-" + connectString + "@" + getId());<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>    private final String operationType;<a name="line.147"></a>
+<span class="sourceLineNo">147</span>  private abstract class ZKTask&lt;T&gt; extends Task {<a name="line.147"></a>
 <span class="sourceLineNo">148</span><a name="line.148"></a>
-<span class="sourceLineNo">149</span>    private int retries;<a name="line.149"></a>
+<span class="sourceLineNo">149</span>    protected final String path;<a name="line.149"></a>
 <span class="sourceLineNo">150</span><a name="line.150"></a>
-<span class="sourceLineNo">151</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      this.path = path;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.future = future;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      this.operationType = operationType;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
+<span class="sourceLineNo">151</span>    private final CompletableFuture&lt;T&gt; future;<a name="line.151"></a>
+<span class="sourceLineNo">152</span><a name="line.152"></a>
+<span class="sourceLineNo">153</span>    private final String operationType;<a name="line.153"></a>
+<span class="sourceLineNo">154</span><a name="line.154"></a>
+<span class="sourceLineNo">155</span>    private int retries;<a name="line.155"></a>
 <span class="sourceLineNo">156</span><a name="line.156"></a>
-<span class="sourceLineNo">157</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      tasks.add(new Task() {<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>        @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>          pendingRequests--;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>          Code code = Code.get(rc);<a name="line.163"></a>
-<span class="sourceLineNo">164</span>          if (code == Code.OK) {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>            future.complete(ret);<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          } else if (code == Code.NONODE) {<a name="line.166"></a>
-<span class="sourceLineNo">167</span>            if (errorIfNoNode) {<a name="line.167"></a>
-<span class="sourceLineNo">168</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.168"></a>
-<span class="sourceLineNo">169</span>            } else {<a name="line.169"></a>
-<span class="sourceLineNo">170</span>              future.complete(ret);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>            }<a name="line.171"></a>
-<span class="sourceLineNo">172</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.172"></a>
-<span class="sourceLineNo">173</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.173"></a>
-<span class="sourceLineNo">174</span>          } else {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.176"></a>
-<span class="sourceLineNo">177</span>              try {<a name="line.177"></a>
-<span class="sourceLineNo">178</span>                zk.close();<a name="line.178"></a>
-<span class="sourceLineNo">179</span>              } catch (InterruptedException e) {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>              }<a name="line.180"></a>
-<span class="sourceLineNo">181</span>            }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.182"></a>
-<span class="sourceLineNo">183</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.183"></a>
-<span class="sourceLineNo">184</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.184"></a>
-<span class="sourceLineNo">185</span>              tasks.add(ZKTask.this);<a name="line.185"></a>
-<span class="sourceLineNo">186</span>            } else {<a name="line.186"></a>
-<span class="sourceLineNo">187</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.187"></a>
-<span class="sourceLineNo">188</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.188"></a>
-<span class="sourceLineNo">189</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.189"></a>
-<span class="sourceLineNo">190</span>            }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>          }<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        }<a name="line.192"></a>
-<span class="sourceLineNo">193</span><a name="line.193"></a>
-<span class="sourceLineNo">194</span>        @Override<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        public void closed(IOException e) {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.196"></a>
-<span class="sourceLineNo">197</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.197"></a>
-<span class="sourceLineNo">198</span>          // fail the request, although it is succeeded actually.<a name="line.198"></a>
-<span class="sourceLineNo">199</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.199"></a>
-<span class="sourceLineNo">200</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.200"></a>
-<span class="sourceLineNo">201</span>          // response then a failure is always possible.<a name="line.201"></a>
-<span class="sourceLineNo">202</span>          future.completeExceptionally(e);<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        }<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      });<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>    @Override<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    public boolean needZk() {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return true;<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>    protected abstract void doExec(ZooKeeper zk);<a name="line.212"></a>
-<span class="sourceLineNo">213</span><a name="line.213"></a>
-<span class="sourceLineNo">214</span>    @Override<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    public final void exec(ZooKeeper zk) {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      pendingRequests++;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      doExec(zk);<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    }<a name="line.218"></a>
+<span class="sourceLineNo">157</span>    protected ZKTask(String path, CompletableFuture&lt;T&gt; future, String operationType) {<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      this.path = path;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      this.future = future;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      this.operationType = operationType;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span><a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected final void onComplete(ZooKeeper zk, int rc, T ret, boolean errorIfNoNode) {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      tasks.add(new Task() {<a name="line.164"></a>
+<span class="sourceLineNo">165</span><a name="line.165"></a>
+<span class="sourceLineNo">166</span>        @Override<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        public void exec(ZooKeeper alwaysNull) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>          pendingRequests--;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          Code code = Code.get(rc);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          if (code == Code.OK) {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>            future.complete(ret);<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          } else if (code == Code.NONODE) {<a name="line.172"></a>
+<span class="sourceLineNo">173</span>            if (errorIfNoNode) {<a name="line.173"></a>
+<span class="sourceLineNo">174</span>              future.completeExceptionally(KeeperException.create(code, path));<a name="line.174"></a>
+<span class="sourceLineNo">175</span>            } else {<a name="line.175"></a>
+<span class="sourceLineNo">176</span>              future.complete(ret);<a name="line.176"></a>
+<span class="sourceLineNo">177</span>            }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>          } else if (FAIL_FAST_CODES.contains(code)) {<a name="line.178"></a>
+<span class="sourceLineNo">179</span>            future.completeExceptionally(KeeperException.create(code, path));<a name="line.179"></a>
+<span class="sourceLineNo">180</span>          } else {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>            if (code == Code.SESSIONEXPIRED) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>              LOG.warn("{} to {} session expired, close and reconnect", getId(), connectString);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>              try {<a name="line.183"></a>
+<span class="sourceLineNo">184</span>                zk.close();<a name="line.184"></a>
+<span class="sourceLineNo">185</span>              } catch (InterruptedException e) {<a name="line.185"></a>
+<span class="sourceLineNo">186</span>              }<a name="line.186"></a>
+<span class="sourceLineNo">187</span>            }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>            if (ZKTask.this.delay(retryIntervalMs, maxRetries)) {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}", getId(),<a name="line.189"></a>
+<span class="sourceLineNo">190</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>              tasks.add(ZKTask.this);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>            } else {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>              LOG.warn("{} to {} failed for {} of {}, code = {}, retries = {}, give up", getId(),<a name="line.193"></a>
+<span class="sourceLineNo">194</span>                connectString, operationType, path, code, ZKTask.this.retries);<a name="line.194"></a>
+<span class="sourceLineNo">195</span>              future.completeExceptionally(KeeperException.create(code, path));<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><a name="line.199"></a>
+<span class="sourceLineNo">200</span>        @Override<a name="line.200"></a>
+<span class="sourceLineNo">201</span>        public void closed(IOException e) {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>          // It may happen that a request is succeeded and the onComplete has been called and pushed<a name="line.202"></a>
+<span class="sourceLineNo">203</span>          // us into the task queue, but before we get called a close is called and here we will<a name="line.203"></a>
+<span class="sourceLineNo">204</span>          // fail the request, although it is succeeded actually.<a name="line.204"></a>
+<span class="sourceLineNo">205</span>          // This is not a perfect solution but anyway, it is better than hang the requests for<a name="line.205"></a>
+<span class="sourceLineNo">206</span>          // ever, and also acceptable as if you close the zk client before actually getting the<a name="line.206"></a>
+<span class="sourceLineNo">207</span>          // response then a failure is always possible.<a name="line.207"></a>
+<span class="sourceLineNo">208</span>          future.completeExceptionally(e);<a name="line.208"></a>
+<span class="sourceLineNo">209</span>        }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      });<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>    @Override<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    public boolean needZk() {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return true;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span><a name="line.217"></a>
+<span class="sourceLineNo">218</span>    protected abstract void doExec(ZooKeeper zk);<a name="line.218"></a>
 <span class="sourceLineNo">219</span><a name="line.219"></a>
-<span class="sourceLineNo">220</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      if (retries &gt;= maxRetries) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>        return false;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      retries++;<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return true;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>    @Override<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    public void connectFailed(IOException e) {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.231"></a>
-<span class="sourceLineNo">232</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>          connectString, operationType, path, retries, e);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>        tasks.add(this);<a name="line.234"></a>
-<span class="sourceLineNo">235</span>      } else {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.236"></a>
-<span class="sourceLineNo">237</span>          connectString, operationType, path, retries, e);<a name="line.237"></a>
-<span class="sourceLineNo">238</span>        future.completeExceptionally(e);<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      }<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span><a name="line.241"></a>
-<span class="sourceLineNo">242</span>    @Override<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    public void closed(IOException e) {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      future.completeExceptionally(e);<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">220</span>    @Override<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    public final void exec(ZooKeeper zk) {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      pendingRequests++;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      doExec(zk);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    public boolean delay(long intervalMs, int maxRetries) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      if (retries &gt;= maxRetries) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        return false;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      retries++;<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      time = System.nanoTime() + TimeUnit.MILLISECONDS.toNanos(intervalMs);<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return true;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span><a name="line.234"></a>
+<span class="sourceLineNo">235</span>    @Override<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    public void connectFailed(IOException e) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      if (delay(retryIntervalMs, maxRetries)) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}", getId(),<a name="line.238"></a>
+<span class="sourceLineNo">239</span>          connectString, operationType, path, retries, e);<a name="line.239"></a>
+<span class="sourceLineNo">240</span>        tasks.add(this);<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      } else {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>        LOG.warn("{} to {} failed to connect to zk fo {} of {}, retries = {}, give up", getId(),<a name="line.242"></a>
+<span class="sourceLineNo">243</span>          connectString, operationType, path, retries, e);<a name="line.243"></a>
+<span class="sourceLineNo">244</span>        future.completeExceptionally(e);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    future.completeExceptionally(e);<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    return future;<a name="line.251"></a>
+<span class="sourceLineNo">248</span>    @Override<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    public void closed(IOException e) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      future.completeExceptionally(e);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    }<a name="line.251"></a>
 <span class="sourceLineNo">252</span>  }<a name="line.252"></a>
 <span class="sourceLineNo">253</span><a name="line.253"></a>
-<span class="sourceLineNo">254</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>    if (closed.get()) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      return failed(new IOException("Client already closed"));<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.259"></a>
-<span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>      @Override<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      protected void doExec(ZooKeeper zk) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        zk.getData(path, false,<a name="line.263"></a>
-<span class="sourceLineNo">264</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    });<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    return future;<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>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>    if (closed.get()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      return failed(new IOException("Client already closed"));<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.275"></a>
-<span class="sourceLineNo">276</span><a name="line.276"></a>
-<span class="sourceLineNo">277</span>      @Override<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      protected void doExec(ZooKeeper zk) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      }<a name="line.280"></a>
-<span class="sourceLineNo">281</span>    });<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    return future;<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>  private void closeZk() {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    if (zookeeper != null) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      try {<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        zookeeper.close();<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException e) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      }<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      zookeeper = null;<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  private ZooKeeper getZk() throws IOException {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    // may be closed when session expired<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.297"></a>
-<span class="sourceLineNo">298</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>    return zookeeper;<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>  private void run() {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    for (;;) {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>      Task task;<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      try {<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>      } catch (InterruptedException e) {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>        continue;<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      }<a name="line.310"></a>
-<span class="sourceLineNo">311</span>      if (task == CLOSE) {<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        break;<a name="line.312"></a>
-<span class="sourceLineNo">313</span>      }<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      if (task == null) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        if (pendingRequests == 0) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.316"></a>
-<span class="sourceLineNo">317</span>            getId(), connectString, keepAliveTimeMs);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>          closeZk();<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        continue;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      }<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      if (!task.needZk()) {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        task.exec(null);<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      } else {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        ZooKeeper zk;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        try {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>          zk = getZk();<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        } catch (IOException e) {<a name="line.328"></a>
-<span class="sourceLineNo">329</span>          task.connectFailed(e);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          continue;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        }<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        task.exec(zk);<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>    closeZk();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>    IOException error = new IOException("Client already closed");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    tasks.clear();<a name="line.338"></a>
-<span class="sourceLineNo">339</span>  }<a name="line.339"></a>
-<span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  @Override<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public void close() {<a name="line.342"></a>
-<span class="sourceLineNo">343</span>    if (closed.compareAndSet(false, true)) {<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      tasks.add(CLOSE);<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    }<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  @VisibleForTesting<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  public String getConnectString() {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    return connectString;<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">254</span>  private static &lt;T&gt; CompletableFuture&lt;T&gt; failed(Throwable e) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    CompletableFuture&lt;T&gt; future = new CompletableFuture&lt;&gt;();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    future.completeExceptionally(e);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    return future;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  }<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>  public CompletableFuture&lt;byte[]&gt; get(String path) {<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    if (closed.get()) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      return failed(new IOException("Client already closed"));<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    CompletableFuture&lt;byte[]&gt; future = new CompletableFuture&lt;&gt;();<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    tasks.add(new ZKTask&lt;byte[]&gt;(path, future, "get") {<a name="line.265"></a>
+<span class="sourceLineNo">266</span><a name="line.266"></a>
+<span class="sourceLineNo">267</span>      @Override<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      protected void doExec(ZooKeeper zk) {<a name="line.268"></a>
+<span class="sourceLineNo">269</span>        zk.getData(path, false,<a name="line.269"></a>
+<span class="sourceLineNo">270</span>            (rc, path, ctx, data, stat) -&gt; onComplete(zk, rc, data, true), null);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      }<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    });<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    return future;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span><a name="line.275"></a>
+<span class="sourceLineNo">276</span>  public CompletableFuture&lt;Stat&gt; exists(String path) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>    if (closed.get()) {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      return failed(new IOException("Client already closed"));<a name="line.278"></a>
+<span class="sourceLineNo">279</span>    }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    CompletableFuture&lt;Stat&gt; future = new CompletableFuture&lt;&gt;();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    tasks.add(new ZKTask&lt;Stat&gt;(path, future, "exists") {<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>      @Override<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      protected void doExec(ZooKeeper zk) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        zk.exists(path, false, (rc, path, ctx, stat) -&gt; onComplete(zk, rc, stat, false), null);<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 future;<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>  private void closeZk() {<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    if (zookeeper != null) {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      try {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        zookeeper.close();<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      } catch (InterruptedException e) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      zookeeper = null;<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>  private ZooKeeper getZk() throws IOException {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    // may be closed when session expired<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    if (zookeeper == null || !zookeeper.getState().isAlive()) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      zookeeper = new ZooKeeper(connectString, sessionTimeoutMs, e -&gt; {});<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    return zookeeper;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  }<a name="line.307"></a>
+<span class="sourceLineNo">308</span><a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void run() {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    for (;;) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      Task task;<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        task = tasks.poll(keepAliveTimeMs, TimeUnit.MILLISECONDS);<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      } catch (InterruptedException e) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        continue;<a name="line.315"></a>
+<span class="sourceLineNo">316</span>      }<a name="line.316"></a>
+<span class="sourceLineNo">317</span>      if (task == CLOSE) {<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        break;<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      }<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      if (task == null) {<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        if (pendingRequests == 0) {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>          LOG.trace("{} to {} inactive for {}ms; closing (Will reconnect when new requests)",<a name="line.322"></a>
+<span class="sourceLineNo">323</span>            getId(), connectString, keepAliveTimeMs);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>          closeZk();<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        }<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        continue;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>      }<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      if (!task.needZk()) {<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        task.exec(null);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      } else {<a name="line.330"></a>
+<span class="sourceLineNo">331</span>        ZooKeeper zk;<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        try {<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          zk = getZk();<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          task.connectFailed(e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          continue;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>        task.exec(zk);<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      }<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    closeZk();<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    IOException error = new IOException("Client already closed");<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    Arrays.stream(tasks.toArray(new Task[0])).forEach(t -&gt; t.closed(error));<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    tasks.clear();<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>  @Override<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public void close() {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (closed.compareAndSet(false, true)) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      LOG.info("Close zookeeper connection {} to {}", getId(), connectString);<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      tasks.add(CLOSE);<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    }<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  }<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  @VisibleForTesting<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  public String getConnectString() {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return connectString;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  }<a name="line.358"></a>
+<span class="sourceLineNo">359</span>}<a name="line.359"></a>
 
 
 


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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
index cdb56af..dd13b39 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-frame.html
@@ -252,6 +252,7 @@
 <li><a href="TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestScannersFromClientSide2</a></li>
 <li><a href="TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestScannerTimeout</a></li>
 <li><a href="TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestScanWithoutFetchingData</a></li>
+<li><a href="TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestSeparateClientZKCluster</a></li>
 <li><a href="TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestServerBusyException</a></li>
 <li><a href="TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestServerBusyException.SleepCoprocessor</a></li>
 <li><a href="TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
index 3385a0a..10a6877 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-summary.html
@@ -1215,28 +1215,32 @@
 </td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client">TestSeparateClientZKCluster</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException</a></td>
 <td class="colLast">
 <div class="block">This class is for testing HBaseConnectionManager ServerBusyException.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.SleepLongerAtFirstCoprocessor</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestGetThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestGetThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.TestPutThread.html" title="class in org.apache.hadoop.hbase.client">TestServerBusyException.TestPutThread</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html" title="class in org.apache.hadoop.hbase.client">TestServerLoadDurability</a></td>
 <td class="colLast">
 <div class="block">HBASE-19496 noticed that the RegionLoad/ServerLoad may be corrupted if rpc server
@@ -1244,103 +1248,103 @@
  invoke HMaster to iterate all stored server/region loads.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html" title="class in org.apache.hadoop.hbase.client">TestShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html" title="class in org.apache.hadoop.hbase.client">TestShellNoCluster</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html" title="class in org.apache.hadoop.hbase.client">TestShortCircuitConnection</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSimpleRequestController.html" title="class in org.apache.hadoop.hbase.client">TestSimpleRequestController</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html" title="class in org.apache.hadoop.hbase.client">TestSizeFailures</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html" title="class in org.apache.hadoop.hbase.client">TestSmallReversedScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotCloneIndependence</a></td>
 <td class="colLast">
 <div class="block">Test to verify that the cloned table is independent of the table from which it was cloned</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromAdmin.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromAdmin</a></td>
 <td class="colLast">
 <div class="block">Test snapshot logic from the client</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClient</a></td>
 <td class="colLast">
 <div class="block">Test create/using/deleting snapshots from the client</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotFromClientWithRegionReplicas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotMetadata</a></td>
 <td class="colLast">
 <div class="block">Test class to verify that metadata is consistent before and after a snapshot attempt.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessReadAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessReadAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.AccessWriteAction.html" title="class in org.apache.hadoop.hbase.client">TestSnapshotWithAcl.AccessWriteAction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html" title="class in org.apache.hadoop.hbase.client">TestSplitOrMergeStatus</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableDescriptorBuilder.html" title="class in org.apache.hadoop.hbase.client">TestTableDescriptorBuilder</a></td>
 <td class="colLast">
 <div class="block">Test setting values in the descriptor</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html" title="class in org.apache.hadoop.hbase.client">TestTableFavoredNodes</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html" title="class in org.apache.hadoop.hbase.client">TestTableShell</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html" title="class in org.apache.hadoop.hbase.client">TestTimestampsFilter</a></td>
 <td class="colLast">
 <div class="block">Run tests related to <code>TimestampsFilter</code> using HBase client APIs.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html" title="class in org.apache.hadoop.hbase.client">TestUpdateConfiguration</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html" title="class in org.apache.hadoop.hbase.client">TestZKAsyncRegistry</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
index 7f299bf..58e8648 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -490,6 +490,7 @@
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestScannersFromClientSide2</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestScannerTimeout</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestScanWithoutFetchingData</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestSeparateClientZKCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestServerBusyException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestServerBusyException.SleepCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.SleepLongerAtFirstCoprocessor.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestServerBusyException.SleepLongerAtFirstCoprocessor</span></a> (implements org.apache.hadoop.hbase.coprocessor.RegionCoprocessor, org.apache.hadoop.hbase.coprocessor.RegionObserver)</li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
index fd27af8..b9e2877 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
@@ -180,7 +180,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>catalogJanitorChore, coprocessorServiceHandlers, cpHost, DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, loadBalancerTracker, MASTER, metricsMaster, regionServerTracker, rsFatals, serviceStarted, snapshotManager</code></li>
+<code>catalogJanitorChore, coprocessorServiceHandlers, cpHost, DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, loadBalancerTracker, MASTER, masterAddressSyncer, metaLocationSyncer, metricsMaster, regionServerTracker, rsFatals, serviceStarted, snapshotManager</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
@@ -238,7 +238,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, unassign, updateConfiguration, updateRe
 gionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, unassign, updateConfigurati
 on, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterNoCluster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
index c7dce52..4a4734e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterNoCluster.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":9,"i1":10,"i2":9,"i3":10,"i4":10,"i5":10,"i6":10,"i7":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/master/TestMasterNoCluster.html#line.79">TestMasterNoCluster</a>
+<pre>public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.80">TestMasterNoCluster</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">Standup the master and fake it to test various aspects of master function.
  Does NOT spin up a mini hbase nor mini dfs cluster testing master (it does
@@ -203,10 +203,18 @@ 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/master/TestMasterNoCluster.html#testNotPullingDeadRegionServerFromZK--">testNotPullingDeadRegionServerFromZK</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterNoCluster.html#testMasterInitWithObserverModeClientZKQuorum--">testMasterInitWithObserverModeClientZKQuorum</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/master/TestMasterNoCluster.html#testMasterInitWithSameClientServerZKQuorum--">testMasterInitWithSameClientServerZKQuorum</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/master/TestMasterNoCluster.html#testNotPullingDeadRegionServerFromZK--">testNotPullingDeadRegionServerFromZK</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/master/TestMasterNoCluster.html#testStopDuringStart--">testStopDuringStart</a></span>()</code>
 <div class="block">Test starting master then stopping it before its fully up.</div>
 </td>
@@ -239,7 +247,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/master/TestMasterNoCluster.html#line.82">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/master/TestMasterNoCluster.html#line.83">CLASS_RULE</a></pre>
 </li>
 </ul>
 <a name="LOG">
@@ -248,7 +256,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/master/TestMasterNoCluster.html#line.85">LOG</a></pre>
+<pre>private static final&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.86">LOG</a></pre>
 </li>
 </ul>
 <a name="TESTUTIL">
@@ -257,7 +265,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TESTUTIL</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/master/TestMasterNoCluster.html#line.86">TESTUTIL</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/master/TestMasterNoCluster.html#line.87">TESTUTIL</a></pre>
 </li>
 </ul>
 <a name="name">
@@ -266,7 +274,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/master/TestMasterNoCluster.html#line.89">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.90">name</a></pre>
 </li>
 </ul>
 </li>
@@ -283,7 +291,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestMasterNoCluster</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.79">TestMasterNoCluster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.80">TestMasterNoCluster</a>()</pre>
 </li>
 </ul>
 </li>
@@ -300,7 +308,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setUpBeforeClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.92">setUpBeforeClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.93">setUpBeforeClass</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>
@@ -314,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDownAfterClass</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.102">tearDownAfterClass</a>()
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.103">tearDownAfterClass</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>
@@ -328,7 +336,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.107">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.108">tearDown</a>()
               throws org.apache.zookeeper.KeeperException,
                      org.apache.hadoop.hbase.ZooKeeperConnectionException,
                      <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>
@@ -346,7 +354,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testStopDuringStart</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.133">testStopDuringStart</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.134">testStopDuringStart</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,
                                 <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -365,7 +373,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>testFailover</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.151">testFailover</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.152">testFailover</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 master failover.
  Start up three fake regionservers and a master.</div>
@@ -382,10 +390,10 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <a name="testNotPullingDeadRegionServerFromZK--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>testNotPullingDeadRegionServerFromZK</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.254">testNotPullingDeadRegionServerFromZK</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.255">testNotPullingDeadRegionServerFromZK</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,
                                                  <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -397,6 +405,34 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testMasterInitWithSameClientServerZKQuorum--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testMasterInitWithSameClientServerZKQuorum</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.324">testMasterInitWithSameClientServerZKQuorum</a>()
+                                                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
+<a name="testMasterInitWithObserverModeClientZKQuorum--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testMasterInitWithObserverModeClientZKQuorum</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestMasterNoCluster.html#line.335">testMasterInitWithObserverModeClientZKQuorum</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/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/master/TestMetaShutdownHandler.MyRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestMetaShutdownHandler.MyRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestMetaShutdownHandler.MyRegionServer.html
index 16d19a5..ba5cc1f 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMetaShutdownHandler.MyRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMetaShutdownHandler.MyRegionServer.html
@@ -224,7 +224,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBa
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedure
 Complete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, g
 etMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, rem
 oteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
index 816372c..3800080 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
@@ -180,7 +180,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>catalogJanitorChore, coprocessorServiceHandlers, cpHost, DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, loadBalancerTracker, MASTER, metricsMaster, regionServerTracker, rsFatals, serviceStarted, snapshotManager</code></li>
+<code>catalogJanitorChore, coprocessorServiceHandlers, cpHost, DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS, loadBalancerTracker, MASTER, masterAddressSyncer, metaLocationSyncer, metricsMaster, regionServerTracker, rsFatals, serviceStarted, snapshotManager</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
@@ -237,7 +237,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unassign, update
 Configuration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unas
 sign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/OOMERegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/OOMERegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/OOMERegionServer.html
index 0d31c3b..42d888c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/OOMERegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/OOMERegionServer.html
@@ -228,7 +228,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGr
 oupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThre
 adWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, kill, login, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGr
 oupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThre
 adWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, login, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html
index 4f8bfe3..94f806b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html
@@ -212,7 +212,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGr
 oupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThre
 adWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGr
 oupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThre
 adWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html
index 1fb4e32..f528d3d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRSKilledWhenInitializing.RegisterAndDieRegionServer.html
@@ -226,7 +226,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBa
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConf
 ig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeF
 requency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConf
 ig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeF
 requency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
index 913003f..cf37764 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -237,7 +237,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, 
 getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isO
 nline, isOnlineRegionsEmpty, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, 
 getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isO
 nline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html
index 8e05750..615705e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionServerReportForDuty.MyRegionServer.html
@@ -246,7 +246,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.MiniHBa
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFav
 oredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameIn
 stead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFav
 oredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameIn
 stead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html
index cf7ebd2..fa229bb 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestScannerHeartbeatMessages.HeartbeatHRegionServer.html
@@ -213,7 +213,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConfig, getExecu
 torService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, ge
 tUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConfig, getExecu
 torService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, ge
 tUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html
index 366d643..205ea9c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestShutdownWhileWALBroken.MyRegionServer.html
@@ -228,7 +228,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConf
 ig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeF
 requency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, configureInfoServer, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getDumpServlet, getEventLoopGroupConf
 ig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeF
 requency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, registerService, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, stopServiceThreads, toString, triggerFlushInPrimaryRegion, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
index b555643..43a7b12 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
@@ -237,7 +237,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, 
 getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isO
 nline, isOnlineRegionsEmpty, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, buildRegionSpaceUseReportRequest, buildReportAndSend, buildServerLoad, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeMetaTableRegions, closeRegion, closeUserRegions, constructRegionServer, convertRegionSize, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, decorateRegionServerConfiguration, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getCopyOfOnlineRegionsSortedByOffHeapSize, getCopyOfOnlineRegionsSortedByOnHeapSize, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, 
 getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsAsPrintableString, getOnlineRegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSinkService, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getWriteLock, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isO
 nline, isOnlineRegionsEmpty, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeFromMovedRegions, removeRegion, reportFileArchivalForQuotas, reportProcedureDone, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, triggerFlushInPrimaryRegion, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
index 10e72e6..0d824da 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
@@ -277,7 +277,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unassign, update
 Configuration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, addRegion, addToMovedRegions, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLocator, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnline
 RegionsLocalContext, getOnlineTables, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getStartcode, getThreadWakeFrequency, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, regionLock, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, sendShutdownInterrupt, setupClusterConnection, stop, toString, tryRegionServerReport, unas
 sign, updateConfiguration, updateRegionFavoredNodesMapping, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html
index 0184695..ba32b7d 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationSource.ShutdownDelayRegionServer.html
@@ -212,7 +212,7 @@ extends org.apache.hadoop.hbase.regionserver.HRegionServer</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
-<code>abort, abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLoc
 ator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDeployTasks, re
 gionLock, registerService, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
+<code>abort, abort, addRegion, addToMovedRegions, canCreateBaseZNode, canUpdateTableDescriptor, checkFileSystem, cleanMovedRegions, clearRegionBlockCache, closeAllRegions, closeAndOfflineRegionForSplitOrMerge, closeRegion, configureInfoServer, constructRegionServer, convertThrowableToIOE, createClusterConnection, createConnection, createRegionLoad, createRegionServerStatusStub, createRegionServerStatusStub, createRpcServices, execRegionServerService, executeProcedure, getCacheConfig, getChoreService, getClusterConnection, getClusterId, getCompactionPressure, getCompactionRequestor, getCompactSplitThread, getConfiguration, getConfigurationManager, getConnection, getCoordinatedStateManager, getDumpServlet, getEventLoopGroupConfig, getExecutorService, getFavoredNodesForRegion, getFileSystem, getFlushPressure, getFlushRequester, getFlushThroughputController, getFsTableDescriptors, getHeapMemoryManager, getInfoServer, getLastSequenceId, getLeases, getMasterAddressTracker, getMetaTableLoc
 ator, getMetaTableObserver, getMetrics, getMostLoadedRegions, getNonceManager, getNumberOfOnlineRegions, getOnlineRegion, getOnlineRegionsLocalContext, getOnlineTables, getProcessName, getRegion, getRegion, getRegionBlockLocations, getRegionByEncodedName, getRegionByEncodedName, getRegions, getRegions, getRegionServerAccounting, getRegionServerCoprocessorHost, getRegionServerCoprocessors, getRegionServerMetrics, getRegionServerRpcQuotaManager, getRegionServerSpaceQuotaManager, getRegionsInTransitionInRS, getReplicationSourceService, getRootDir, getRpcServer, getRSRpcServices, getSecureBulkLoadManager, getServerName, getStartcode, getTableDescriptors, getThreadWakeFrequency, getUseThisHostnameInstead, getWAL, getWALFileSystem, getWalRoller, getWALRootDir, getWALs, getZooKeeper, handleReportForDutyResponse, initializeMemStoreChunkCreator, isAborted, isClusterUp, isOnline, isShutDown, isStopped, isStopping, kill, login, main, movedRegionCleanerPeriod, onConfigurationChange, postOpenDep
 loyTasks, regionLock, registerService, remoteProcedureComplete, removeRegion, reportFileArchivalForQuotas, reportRegionSizesForQuotas, reportRegionStateTransition, run, sendShutdownInterrupt, setupClusterConnection, stop, stop, toString, tryRegionServerReport, unassign, updateConfiguration, updateRegionFavoredNodesMapping, waitForMasterActive, waitForServerOnline, walRollRequestFinished</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.util.HasThread">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 ab7cd54..bae8c22 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/test/package-tree.html
@@ -255,8 +255,8 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.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/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestBigLinkedList.Generator.Counts.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestBigLinkedList.Generator.Counts</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.test.<a href="../../../../../org/apache/hadoop/hbase/test/IntegrationTestWithCellVisibilityLoadAndVerify.Counters.html" title="enum in org.apache.hadoop.hbase.test"><span class="typeNameLink">IntegrationTestWithCellVisibilityLoadAndVerify.Counters</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 8c40739..6f4a2ec 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -3391,6 +3391,7 @@
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestSeekTo.html" title="class in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">TestSeekTo</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.encoding.<a href="org/apache/hadoop/hbase/io/encoding/TestSeekToBlockWithEncoders.html" title="class in org.apache.hadoop.hbase.io.encoding"><span class="typeNameLink">TestSeekToBlockWithEncoders</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.asyncfs.<a href="org/apache/hadoop/hbase/io/asyncfs/TestSendBufSizePredictor.html" title="class in org.apache.hadoop.hbase.io.asyncfs"><span class="typeNameLink">TestSendBufSizePredictor</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestSeparateClientZKCluster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.wal.<a href="org/apache/hadoop/hbase/regionserver/wal/TestSequenceIdAccounting.html" title="class in org.apache.hadoop.hbase.regionserver.wal"><span class="typeNameLink">TestSequenceIdAccounting</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestSequenceIdMonotonicallyIncreasing.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestSequenceIdMonotonicallyIncreasing</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestSerialization.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestSerialization</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
new file mode 100644
index 0000000..a2b3822
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html
@@ -0,0 +1,340 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<html lang="en">
+<head>
+<title>Source code</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+</head>
+<body>
+<div class="sourceContainer">
+<pre><span class="sourceLineNo">001</span>/**<a name="line.1"></a>
+<span class="sourceLineNo">002</span> * Licensed to the Apache Software Foundation (ASF) under one<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * or more contributor license agreements.  See the NOTICE file<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * distributed with this work for additional information<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * regarding copyright ownership.  The ASF licenses this file<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * to you under the Apache License, Version 2.0 (the<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * "License"); you may not use this file except in compliance<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * with the License.  You may obtain a copy of the License at<a name="line.8"></a>
+<span class="sourceLineNo">009</span> *<a name="line.9"></a>
+<span class="sourceLineNo">010</span> *     http://www.apache.org/licenses/LICENSE-2.0<a name="line.10"></a>
+<span class="sourceLineNo">011</span> *<a name="line.11"></a>
+<span class="sourceLineNo">012</span> * Unless required by applicable law or agreed to in writing, software<a name="line.12"></a>
+<span class="sourceLineNo">013</span> * distributed under the License is distributed on an "AS IS" BASIS,<a name="line.13"></a>
+<span class="sourceLineNo">014</span> * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.<a name="line.14"></a>
+<span class="sourceLineNo">015</span> * See the License for the specific language governing permissions and<a name="line.15"></a>
+<span class="sourceLineNo">016</span> * limitations under the License.<a name="line.16"></a>
+<span class="sourceLineNo">017</span> */<a name="line.17"></a>
+<span class="sourceLineNo">018</span>package org.apache.hadoop.hbase.client;<a name="line.18"></a>
+<span class="sourceLineNo">019</span><a name="line.19"></a>
+<span class="sourceLineNo">020</span>import java.io.File;<a name="line.20"></a>
+<span class="sourceLineNo">021</span><a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.commons.io.FileUtils;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.commons.logging.Log;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.commons.logging.LogFactory;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.HConstants;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.apache.hadoop.hbase.TableName;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.util.JVMClusterUtil.RegionServerThread;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.apache.hadoop.hbase.zookeeper.MiniZooKeeperCluster;<a name="line.36"></a>
+<span class="sourceLineNo">037</span>import org.junit.AfterClass;<a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.junit.Assert;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.junit.BeforeClass;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.junit.ClassRule;<a name="line.40"></a>
+<span class="sourceLineNo">041</span>import org.junit.Rule;<a name="line.41"></a>
+<span class="sourceLineNo">042</span>import org.junit.Test;<a name="line.42"></a>
+<span class="sourceLineNo">043</span>import org.junit.experimental.categories.Category;<a name="line.43"></a>
+<span class="sourceLineNo">044</span>import org.junit.rules.TestName;<a name="line.44"></a>
+<span class="sourceLineNo">045</span><a name="line.45"></a>
+<span class="sourceLineNo">046</span>@Category(MediumTests.class)<a name="line.46"></a>
+<span class="sourceLineNo">047</span>public class TestSeparateClientZKCluster {<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static final Log LOG = LogFactory.getLog(TestSeparateClientZKCluster.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  private static final HBaseTestingUtility TEST_UTIL = new HBaseTestingUtility();<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static final File clientZkDir = new File("/tmp/TestSeparateClientZKCluster");<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static final int ZK_SESSION_TIMEOUT = 5000;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static MiniZooKeeperCluster clientZkCluster;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  private final byte[] family = Bytes.toBytes("cf");<a name="line.54"></a>
+<span class="sourceLineNo">055</span>  private final byte[] qualifier = Bytes.toBytes("c1");<a name="line.55"></a>
+<span class="sourceLineNo">056</span>  private final byte[] row = Bytes.toBytes("row");<a name="line.56"></a>
+<span class="sourceLineNo">057</span>  private final byte[] value = Bytes.toBytes("v1");<a name="line.57"></a>
+<span class="sourceLineNo">058</span>  private final byte[] newVal = Bytes.toBytes("v2");<a name="line.58"></a>
+<span class="sourceLineNo">059</span><a name="line.59"></a>
+<span class="sourceLineNo">060</span>  @Rule<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public TestName name = new TestName();<a name="line.61"></a>
+<span class="sourceLineNo">062</span><a name="line.62"></a>
+<span class="sourceLineNo">063</span>  @ClassRule<a name="line.63"></a>
+<span class="sourceLineNo">064</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      HBaseClassTestRule.forClass(TestSeparateClientZKCluster.class);<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>  @BeforeClass<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  public static void beforeAllTests() throws Exception {<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    int clientZkPort = 21828;<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    clientZkCluster = new MiniZooKeeperCluster(TEST_UTIL.getConfiguration());<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    clientZkCluster.setDefaultClientPort(clientZkPort);<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    clientZkCluster.startup(clientZkDir);<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    // reduce the retry number and start log counter<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    TEST_UTIL.getConfiguration().setInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER, 2);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    TEST_UTIL.getConfiguration().setInt("hbase.client.start.log.errors.counter", -1);<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    TEST_UTIL.getConfiguration().setInt("zookeeper.recovery.retry", 1);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    // core settings for testing client ZK cluster<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    TEST_UTIL.getConfiguration().set(HConstants.CLIENT_ZOOKEEPER_QUORUM, HConstants.LOCALHOST);<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    TEST_UTIL.getConfiguration().setInt(HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT, clientZkPort);<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    // reduce zk session timeout to easier trigger session expiration<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    TEST_UTIL.getConfiguration().setInt(HConstants.ZK_SESSION_TIMEOUT, ZK_SESSION_TIMEOUT);<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    // Start a cluster with 2 masters and 3 regionservers.<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    TEST_UTIL.startMiniCluster(2, 3);<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>  @AfterClass<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public static void afterAllTests() throws Exception {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    TEST_UTIL.shutdownMiniCluster();<a name="line.88"></a>
+<span class="sourceLineNo">089</span>    clientZkCluster.shutdown();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    FileUtils.deleteDirectory(clientZkDir);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
+<span class="sourceLineNo">092</span><a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @Test(timeout = 60000)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  public void testBasicOperation() throws Exception {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>    TableName tn = TableName.valueOf(name.getMethodName());<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    // create table<a name="line.96"></a>
+<span class="sourceLineNo">097</span>    Connection conn = TEST_UTIL.getConnection();<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    Admin admin = conn.getAdmin();<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    HTable table = (HTable) conn.getTable(tn);<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    try {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      ColumnFamilyDescriptorBuilder cfDescBuilder =<a name="line.101"></a>
+<span class="sourceLineNo">102</span>          ColumnFamilyDescriptorBuilder.newBuilder(family);<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      TableDescriptorBuilder tableDescBuilder =<a name="line.103"></a>
+<span class="sourceLineNo">104</span>          TableDescriptorBuilder.newBuilder(tn).setColumnFamily(cfDescBuilder.build());<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      admin.createTable(tableDescBuilder.build());<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      // test simple get and put<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      Put put = new Put(row);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>      put.addColumn(family, qualifier, value);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>      table.put(put);<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      Get get = new Get(row);<a name="line.110"></a>
+<span class="sourceLineNo">111</span>      Result result = table.get(get);<a name="line.111"></a>
+<span class="sourceLineNo">112</span>      LOG.debug("Result: " + Bytes.toString(result.getValue(family, qualifier)));<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      Assert.assertArrayEquals(value, result.getValue(family, qualifier));<a name="line.113"></a>
+<span class="sourceLineNo">114</span>    } finally {<a name="line.114"></a>
+<span class="sourceLineNo">115</span>      admin.close();<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      table.close();<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    }<a name="line.117"></a>
+<span class="sourceLineNo">118</span>  }<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>  @Test(timeout = 60000)<a name="line.120"></a>
+<span class="sourceLineNo">121</span>  public void testMasterSwitch() throws Exception {<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    // get an admin instance and issue some request first<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    Connection conn = TEST_UTIL.getConnection();<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    Admin admin = conn.getAdmin();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    LOG.debug("Tables: " + admin.listTableDescriptors());<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    try {<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.127"></a>
+<span class="sourceLineNo">128</span>      // switch active master<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      HMaster master = cluster.getMaster();<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      master.stopMaster();<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      while (!master.isShutDown()) {<a name="line.131"></a>
+<span class="sourceLineNo">132</span>        Thread.sleep(200);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      while (!cluster.getMaster().isInitialized()) {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>        Thread.sleep(200);<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      // confirm client access still works<a name="line.137"></a>
+<span class="sourceLineNo">138</span>      Assert.assertTrue(admin.balance(false));<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    } finally {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      admin.close();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    }<a name="line.141"></a>
+<span class="sourceLineNo">142</span>  }<a name="line.142"></a>
+<span class="sourceLineNo">143</span><a name="line.143"></a>
+<span class="sourceLineNo">144</span>  @Test(timeout = 60000)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>  public void testMetaRegionMove() throws Exception {<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    TableName tn = TableName.valueOf(name.getMethodName());<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // create table<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    Connection conn = TEST_UTIL.getConnection();<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    Admin admin = conn.getAdmin();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    HTable table = (HTable) conn.getTable(tn);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    try {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      ColumnFamilyDescriptorBuilder cfDescBuilder =<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          ColumnFamilyDescriptorBuilder.newBuilder(family);<a name="line.154"></a>
+<span class="sourceLineNo">155</span>      TableDescriptorBuilder tableDescBuilder =<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          TableDescriptorBuilder.newBuilder(tn).setColumnFamily(cfDescBuilder.build());<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      admin.createTable(tableDescBuilder.build());<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      // issue some requests to cache the region location<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      Put put = new Put(row);<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      put.addColumn(family, qualifier, value);<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      table.put(put);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>      Get get = new Get(row);<a name="line.162"></a>
+<span class="sourceLineNo">163</span>      Result result = table.get(get);<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      // move meta region and confirm client could detect<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      byte[] destServerName = null;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>        ServerName name = rst.getRegionServer().getServerName();<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        if (!name.equals(cluster.getServerHoldingMeta())) {<a name="line.168"></a>
+<span class="sourceLineNo">169</span>          destServerName = Bytes.toBytes(name.getServerName());<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          break;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>        }<a name="line.171"></a>
+<span class="sourceLineNo">172</span>      }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      admin.move(RegionInfoBuilder.FIRST_META_REGIONINFO.getEncodedNameAsBytes(), destServerName);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      LOG.debug("Finished moving meta");<a name="line.174"></a>
+<span class="sourceLineNo">175</span>      // invalidate client cache<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      RegionInfo region =<a name="line.176"></a>
+<span class="sourceLineNo">177</span>          table.getRegionLocator().getRegionLocation(row).getRegion();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      ServerName currentServer = cluster.getServerHoldingRegion(tn, region.getRegionName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>      for (RegionServerThread rst : cluster.getLiveRegionServerThreads()) {<a name="line.179"></a>
+<span class="sourceLineNo">180</span>        ServerName name = rst.getRegionServer().getServerName();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>        if (!name.equals(currentServer)) {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>          destServerName = Bytes.toBytes(name.getServerName());<a name="line.182"></a>
+<span class="sourceLineNo">183</span>          break;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>        }<a name="line.184"></a>
+<span class="sourceLineNo">185</span>      }<a name="line.185"></a>
+<span class="sourceLineNo">186</span>      admin.move(region.getEncodedNameAsBytes(), destServerName);<a name="line.186"></a>
+<span class="sourceLineNo">187</span>      LOG.debug("Finished moving user region");<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      put = new Put(row);<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      put.addColumn(family, qualifier, newVal);<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      table.put(put);<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      result = table.get(get);<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      LOG.debug("Result: " + Bytes.toString(result.getValue(family, qualifier)));<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      Assert.assertArrayEquals(newVal, result.getValue(family, qualifier));<a name="line.193"></a>
+<span class="sourceLineNo">194</span>    } finally {<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      admin.close();<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      table.close();<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  }<a name="line.198"></a>
+<span class="sourceLineNo">199</span><a name="line.199"></a>
+<span class="sourceLineNo">200</span>  @Test(timeout = 120000)<a name="line.200"></a>
+<span class="sourceLineNo">201</span>  public void testMetaMoveDuringClientZkClusterRestart() throws Exception {<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    TableName tn = TableName.valueOf(name.getMethodName());<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    // create table<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    ClusterConnection conn = (ClusterConnection) TEST_UTIL.getConnection();<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    Admin admin = conn.getAdmin();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    HTable table = (HTable) conn.getTable(tn);<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    try {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      ColumnFamilyDescriptorBuilder cfDescBuilder =<a name="line.208"></a>
+<span class="sourceLineNo">209</span>          ColumnFamilyDescriptorBuilder.newBuilder(family);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      TableDescriptorBuilder tableDescBuilder =<a name="line.210"></a>
+<span class="sourceLineNo">211</span>          TableDescriptorBuilder.newBuilder(tn).setColumnFamily(cfDescBuilder.build());<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      admin.createTable(tableDescBuilder.build());<a name="line.212"></a>
+<span class="sourceLineNo">213</span>      // put some data<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      Put put = new Put(row);<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      put.addColumn(family, qualifier, value);<a name="line.215"></a>
+<span class="sourceLineNo">216</span>      table.put(put);<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      // invalid connection cache<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      conn.clearRegionCache();<a name="line.218"></a>
+<span class="sourceLineNo">219</span>      // stop client zk cluster<a name="line.219"></a>
+<span class="sourceLineNo">220</span>      clientZkCluster.shutdown();<a name="line.220"></a>
+<span class="sourceLineNo">221</span>      // stop current meta server and confirm the server shutdown process<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      // is not affected by client ZK crash<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      MiniHBaseCluster cluster = TEST_UTIL.getHBaseCluster();<a name="line.223"></a>
+<span class="sourceLineNo">224</span>      int metaServerId = cluster.getServerWithMeta();<a name="line.224"></a>
+<span class="sourceLineNo">225</span>      HRegionServer metaServer = cluster.getRegionServer(metaServerId);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      metaServer.stop("Stop current RS holding meta region");<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      while (!metaServer.isShutDown()) {<a name="line.227"></a>
+<span class="sourceLineNo">228</span>        Thread.sleep(200);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>      // wait for meta region online<a name="line.230"></a>
+<span class="sourceLineNo">231</span>      cluster.getMaster().getAssignmentManager()<a name="line.231"></a>
+<span class="sourceLineNo">232</span>          .waitForAssignment(RegionInfoBuilder.FIRST_META_REGIONINFO);<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      // wait some long time to make sure we will retry sync data to client ZK until data set<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      Thread.sleep(10000);<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      clientZkCluster.startup(clientZkDir);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      // new request should pass<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      Get get = new Get(row);<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      Result result = table.get(get);<a name="line.238"></a>
+<span class="sourceLineNo">239</span>      LOG.debug("Result: " + Bytes.toString(result.getValue(family, qualifier)));<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      Assert.assertArrayEquals(value, result.getValue(family, qualifier));<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    } finally {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      admin.close();<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      table.close();<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  }<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>  @Test(timeout = 60000)<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  public void testAsyncTable() throws Exception {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    TableName tn = TableName.valueOf(name.getMethodName());<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    ColumnFamilyDescriptorBuilder cfDescBuilder = ColumnFamilyDescriptorBuilder.newBuilder(family);<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    TableDescriptorBuilder tableDescBuilder =<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        TableDescriptorBuilder.newBuilder(tn).setColumnFamily(cfDescBuilder.build());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    try (AsyncConnection ASYNC_CONN =<a name="line.253"></a>
+<span class="sourceLineNo">254</span>        ConnectionFactory.createAsyncConnection(TEST_UTIL.getConfiguration()).get()) {<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      ASYNC_CONN.getAdmin().createTable(tableDescBuilder.build()).get();<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      AsyncTable&lt;?&gt; table = ASYNC_CONN.getTable(tn);<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      // put some data<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      Put put = new Put(row);<a name="line.258"></a>
+<span class="sourceLineNo">259</span>      put.addColumn(family, qualifier, value);<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      table.put(put).get();<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      // get and verify<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Get get = new Get(row);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      Result result = table.get(get).get();<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      LOG.debug("Result: " + Bytes.toString(result.getValue(family, qualifier)));<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      Assert.assertArrayEquals(value, result.getValue(family, qualifier));<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[28/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 750a1f2..31ac494 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -704,20 +704,20 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/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/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/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/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/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/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/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/Region.Operation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">Region.Operation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/SplitLogWorker.TaskExecutor.Status.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">SplitLogWorker.TaskExecutor.Status</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.LimitScope.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.LimitScope</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/DefaultHeapMemoryTuner.StepDirection.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DefaultHeapMemoryTuner.StepDirection</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TimeRangeTracker.Type.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TimeRangeTracker.Type</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
index 33cc1e7..39c72e6 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html
@@ -478,7 +478,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>replicateEntries</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.161">replicateEntries</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;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.165">replicateEntries</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;org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.WALEntry&gt;&nbsp;entries,
                              <a href="../../../../../../org/apache/hadoop/hbase/CellScanner.html" title="interface in org.apache.hadoop.hbase">CellScanner</a>&nbsp;cells,
                              <a href="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;replicationClusterId,
                              <a href="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;sourceBaseNamespaceDirPath,
@@ -504,7 +504,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>buildBulkLoadHFileMap</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.262">buildBulkLoadHFileMap</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;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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S
 tring</a>&gt;&gt;&gt;&gt;&nbsp;bulkLoadHFileMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.266">buildBulkLoadHFileMap</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;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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S
 tring</a>&gt;&gt;&gt;&gt;&nbsp;bulkLoadHFileMap,
                                    <a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                                    <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)
                             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
@@ -520,7 +520,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addFamilyAndItsHFilePathToTableInMap</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.304">addFamilyAndItsHFilePathToTableInMap</a>(byte[]&nbsp;family,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.308">addFamilyAndItsHFilePathToTableInMap</a>(byte[]&nbsp;family,
                                                   <a href="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;pathToHfileFromNS,
                                                   <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;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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&gt;&gt;&nbsp;familyHFilePathsList)</pre>
 </li>
@@ -531,7 +531,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addNewTableEntryInMap</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.311">addNewTableEntryInMap</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;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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S
 tring</a>&gt;&gt;&gt;&gt;&nbsp;bulkLoadHFileMap,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.315">addNewTableEntryInMap</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;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;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">S
 tring</a>&gt;&gt;&gt;&gt;&nbsp;bulkLoadHFileMap,
                                    byte[]&nbsp;family,
                                    <a href="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;pathToHfileFromNS,
                                    <a href="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)</pre>
@@ -543,7 +543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getHFilePath</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.322">getHFilePath</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.326">getHFilePath</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;table,
                             org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos.BulkLoadDescriptor&nbsp;bld,
                             <a href="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;storeFile,
                             byte[]&nbsp;family)</pre>
@@ -555,7 +555,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>isNewRowOrType</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.335">isNewRowOrType</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;previousCell,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.339">isNewRowOrType</a>(<a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;previousCell,
                                <a href="../../../../../../org/apache/hadoop/hbase/Cell.html" title="interface in org.apache.hadoop.hbase">Cell</a>&nbsp;cell)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -572,7 +572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>toUUID</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.340">toUUID</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.UUID&nbsp;uuid)</pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/UUID.html?is-external=true" title="class or interface in java.util">UUID</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.344">toUUID</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.UUID&nbsp;uuid)</pre>
 </li>
 </ul>
 <a name="addToHashMultiMap-java.util.Map-java.lang.Object-java.lang.Object-java.lang.Object-">
@@ -583,7 +583,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>addToHashMultiMap</h4>
-<pre>private&nbsp;&lt;K1,K2,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;V&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.353">addToHashMultiMap</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;K1,<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;K2,<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;V&gt;&gt;&gt;&nbsp;map,
+<pre>private&nbsp;&lt;K1,K2,V&gt;&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;V&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.357">addToHashMultiMap</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;K1,<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;K2,<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;V&gt;&gt;&gt;&nbsp;map,
                                             K1&nbsp;key1,
                                             K2&nbsp;key2,
                                             V&nbsp;value)</pre>
@@ -606,7 +606,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>stopReplicationSinkServices</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.371">stopReplicationSinkServices</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.375">stopReplicationSinkServices</a>()</pre>
 <div class="block">stop the thread pool executor. It is called when the regionserver is stopped.</div>
 </li>
 </ul>
@@ -616,7 +616,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>batch</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.393">batch</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.397">batch</a>(<a href="../../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&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/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/Row.html" title="interface in org.apache.hadoop.hbase.client">Row</a>&gt;&gt;&nbsp;allRows)
               throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Do the changes and handle the pool</div>
@@ -635,7 +635,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getConnection</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.420">getConnection</a>()
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/client/Connection.html" title="interface in org.apache.hadoop.hbase.client">Connection</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.424">getConnection</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>
@@ -649,7 +649,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getStats</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/replication/regionserver/ReplicationSink.html#line.439">getStats</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/replication/regionserver/ReplicationSink.html#line.443">getStats</a>()</pre>
 <div class="block">Get a string representation of this sink's metrics</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>
@@ -664,7 +664,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSinkMetrics</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSink.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSink</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.449">getSinkMetrics</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/replication/regionserver/MetricsSink.html" title="class in org.apache.hadoop.hbase.replication.regionserver">MetricsSink</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/replication/regionserver/ReplicationSink.html#line.453">getSinkMetrics</a>()</pre>
 <div class="block">Get replication Sink Metrics</div>
 <dl>
 <dt><span class="returnLabel">Returns:</span></dt>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 6ef281d..29d7634 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/package-tree.html
@@ -191,8 +191,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.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>
+<li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/SaslUtil.QualityOfProtection.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">SaslUtil.QualityOfProtection</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.security.<a href="../../../../../org/apache/hadoop/hbase/security/AuthMethod.html" title="enum in org.apache.hadoop.hbase.security"><span class="typeNameLink">AuthMethod</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 0ebeeb0..41c2191 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -199,8 +199,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.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
 <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/2a4c7d89/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 0ed29f9..7b57a99 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/package-tree.html
@@ -533,13 +533,13 @@
 <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/PoolMap.PoolType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">PoolMap.PoolType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.LexicographicalComparerHolder.UnsafeComparer.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Bytes.LexicographicalComparerHolder.UnsafeComparer</span></a> (implements org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/Bytes.Comparer.html" title="interface in org.apache.hadoop.hbase.util">Bytes.Comparer</a>&lt;T&gt;)</li>
-<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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/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/HBaseFsck.ErrorReporter.ERROR_CODE.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">HBaseFsck.ErrorReporter.ERROR_CODE</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/IdReadWriteLock.ReferenceType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">IdReadWriteLock.ReferenceType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/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.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/Order.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">Order</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.util.<a href="../../../../../org/apache/hadoop/hbase/util/ChecksumType.html" title="enum in org.apache.hadoop.hbase.util"><span class="typeNameLink">ChecksumType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
index 3d6c9a2..ea028b7 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.141">ReadOnlyZKClient.ZKTask</a>&lt;T&gt;
+<pre>private abstract class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.147">ReadOnlyZKClient.ZKTask</a>&lt;T&gt;
 extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></pre>
 </li>
 </ul>
@@ -268,7 +268,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>path</h4>
-<pre>protected 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/zookeeper/ReadOnlyZKClient.ZKTask.html#line.143">path</a></pre>
+<pre>protected 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/zookeeper/ReadOnlyZKClient.ZKTask.html#line.149">path</a></pre>
 </li>
 </ul>
 <a name="future">
@@ -277,7 +277,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>future</h4>
-<pre>private final&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.145">future</a></pre>
+<pre>private final&nbsp;<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;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.151">future</a></pre>
 </li>
 </ul>
 <a name="operationType">
@@ -286,7 +286,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>operationType</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.147">operationType</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.153">operationType</a></pre>
 </li>
 </ul>
 <a name="retries">
@@ -295,7 +295,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockListLast">
 <li class="blockList">
 <h4>retries</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.149">retries</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.155">retries</a></pre>
 </li>
 </ul>
 </li>
@@ -312,7 +312,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKTask</h4>
-<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.151">ZKTask</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;path,
+<pre>protected&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.157">ZKTask</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;path,
                  <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;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&gt;&nbsp;future,
                  <a href="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;operationType)</pre>
 </li>
@@ -333,7 +333,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>onComplete</h4>
-<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.157">onComplete</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk,
+<pre>protected final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.163">onComplete</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk,
                                 int&nbsp;rc,
                                 <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html" title="type parameter in ReadOnlyZKClient.ZKTask">T</a>&nbsp;ret,
                                 boolean&nbsp;errorIfNoNode)</pre>
@@ -345,7 +345,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>needZk</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.208">needZk</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.214">needZk</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#needZk--">needZk</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
@@ -358,7 +358,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>doExec</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.212">doExec</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</pre>
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.218">doExec</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</pre>
 </li>
 </ul>
 <a name="exec-org.apache.zookeeper.ZooKeeper-">
@@ -367,7 +367,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>exec</h4>
-<pre>public final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.215">exec</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</pre>
+<pre>public final&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.221">exec</a>(org.apache.zookeeper.ZooKeeper&nbsp;zk)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#exec-org.apache.zookeeper.ZooKeeper-">exec</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
@@ -380,7 +380,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>delay</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.220">delay</a>(long&nbsp;intervalMs,
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.226">delay</a>(long&nbsp;intervalMs,
                      int&nbsp;maxRetries)</pre>
 </li>
 </ul>
@@ -390,7 +390,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockList">
 <li class="blockList">
 <h4>connectFailed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.230">connectFailed</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.236">connectFailed</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#connectFailed-java.io.IOException-">connectFailed</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>
@@ -403,7 +403,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClie
 <ul class="blockListLast">
 <li class="blockList">
 <h4>closed</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.243">closed</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.ZKTask.html#line.249">closed</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>&nbsp;e)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#closed-java.io.IOException-">closed</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
index cfbefa4..d7ec197 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html
@@ -547,7 +547,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>failed</h4>
-<pre>private static&nbsp;&lt;T&gt;&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.248">failed</a>(<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;e)</pre>
+<pre>private static&nbsp;&lt;T&gt;&nbsp;<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;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.254">failed</a>(<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;e)</pre>
 </li>
 </ul>
 <a name="get-java.lang.String-">
@@ -556,7 +556,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>get</h4>
-<pre>public&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.254">get</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;path)</pre>
+<pre>public&nbsp;<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;byte[]&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.260">get</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;path)</pre>
 </li>
 </ul>
 <a name="exists-java.lang.String-">
@@ -565,7 +565,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>exists</h4>
-<pre>public&nbsp;<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;org.apache.zookeeper.data.Stat&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.270">exists</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;path)</pre>
+<pre>public&nbsp;<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;org.apache.zookeeper.data.Stat&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.276">exists</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;path)</pre>
 </li>
 </ul>
 <a name="closeZk--">
@@ -574,7 +574,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>closeZk</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.285">closeZk</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.291">closeZk</a>()</pre>
 </li>
 </ul>
 <a name="getZk--">
@@ -583,7 +583,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getZk</h4>
-<pre>private&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.295">getZk</a>()
+<pre>private&nbsp;org.apache.zookeeper.ZooKeeper&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.301">getZk</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>
@@ -597,7 +597,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>run</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.303">run</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.309">run</a>()</pre>
 </li>
 </ul>
 <a name="close--">
@@ -606,7 +606,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/zookeeper/ReadOnlyZKClient.html#line.342">close</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.html#line.348">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>
@@ -621,7 +621,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getConnectString</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/zookeeper/ReadOnlyZKClient.html#line.350">getConnectString</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/zookeeper/ReadOnlyZKClient.html#line.356">getConnectString</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
index 198c019..5265f2e 100644
--- a/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
+++ b/devapidocs/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.290">ZKConfig.ZKClusterKey</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.html#line.291">ZKConfig.ZKClusterKey</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>
@@ -219,7 +219,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>quorumString</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.291">quorumString</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.292">quorumString</a></pre>
 </li>
 </ul>
 <a name="clientPort">
@@ -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>clientPort</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.292">clientPort</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.293">clientPort</a></pre>
 </li>
 </ul>
 <a name="znodeParent">
@@ -237,7 +237,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>znodeParent</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> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.293">znodeParent</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.294">znodeParent</a></pre>
 </li>
 </ul>
 </li>
@@ -254,7 +254,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ZKClusterKey</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.295">ZKClusterKey</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;quorumString,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.296">ZKClusterKey</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;quorumString,
              int&nbsp;clientPort,
              <a href="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;znodeParent)</pre>
 </li>
@@ -273,7 +273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getQuorumString</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/zookeeper/ZKConfig.ZKClusterKey.html#line.301">getQuorumString</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/zookeeper/ZKConfig.ZKClusterKey.html#line.302">getQuorumString</a>()</pre>
 </li>
 </ul>
 <a name="getClientPort--">
@@ -282,7 +282,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getClientPort</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.305">getClientPort</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/zookeeper/ZKConfig.ZKClusterKey.html#line.306">getClientPort</a>()</pre>
 </li>
 </ul>
 <a name="getZnodeParent--">
@@ -291,7 +291,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getZnodeParent</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/zookeeper/ZKConfig.ZKClusterKey.html#line.309">getZnodeParent</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/zookeeper/ZKConfig.ZKClusterKey.html#line.310">getZnodeParent</a>()</pre>
 </li>
 </ul>
 </li>


[21/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index c8b113b..a97dfdc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -146,3486 +146,3511 @@
 <span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
 <span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.zookeeper.KeeperException;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.eclipse.jetty.server.Server;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.slf4j.Logger;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.slf4j.LoggerFactory;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>/**<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * run the cluster.  All others park themselves in their constructor until<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.224"></a>
-<span class="sourceLineNo">225</span> *<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.230"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * run the cluster.  All others park themselves in their constructor until<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> *<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.230"></a>
 <span class="sourceLineNo">231</span> *<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * @see org.apache.zookeeper.Watcher<a name="line.232"></a>
-<span class="sourceLineNo">233</span> */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@SuppressWarnings("deprecation")<a name="line.235"></a>
-<span class="sourceLineNo">236</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private static class InitializationMonitor extends HasThread {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     * true, do nothing otherwise.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public static final boolean HALT_DEFAULT = false;<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    private final HMaster master;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    private final long timeout;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    private final boolean haltOnTimeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    InitializationMonitor(HMaster master) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      super("MasterInitializationMonitor");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.master = master;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.setDaemon(true);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public void run() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          Thread.sleep(timeout);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          if (master.isInitialized()) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } else {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.276"></a>
-<span class="sourceLineNo">277</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            if (haltOnTimeout) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.280"></a>
-<span class="sourceLineNo">281</span>              System.exit(-1);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } catch (InterruptedException ie) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  //instance into web context.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  public static final String MASTER = "master";<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Manager and zk listener for master election<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private final ActiveMasterManager activeMasterManager;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  // Region server tracker<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  RegionServerTracker regionServerTracker;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Draining region server tracker<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private DrainingServerTracker drainingServerTracker;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Tracker for load balancer state<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Tracker for split and merge state<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for region normalizer state<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.308"></a>
+<span class="sourceLineNo">232</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * @see org.apache.zookeeper.Watcher<a name="line.234"></a>
+<span class="sourceLineNo">235</span> */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>@SuppressWarnings("deprecation")<a name="line.237"></a>
+<span class="sourceLineNo">238</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private static class InitializationMonitor extends HasThread {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.251"></a>
+<span class="sourceLineNo">252</span>     * true, do nothing otherwise.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>     */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public static final boolean HALT_DEFAULT = false;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    private final HMaster master;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    private final long timeout;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private final boolean haltOnTimeout;<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    InitializationMonitor(HMaster master) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super("MasterInitializationMonitor");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      this.master = master;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.setDaemon(true);<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>    @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public void run() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Thread.sleep(timeout);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          if (master.isInitialized()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          } else {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>            if (haltOnTimeout) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              System.exit(-1);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      } catch (InterruptedException ie) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  //instance into web context.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final String MASTER = "master";<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  // Manager and zk listener for master election<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private final ActiveMasterManager activeMasterManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  // Region server tracker<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  RegionServerTracker regionServerTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  // Draining region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private DrainingServerTracker drainingServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  // Tracker for load balancer state<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  //Tracker for master maintenance mode setting<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  // Tracker for split and merge state<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.311"></a>
 <span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private ClusterSchemaService clusterSchemaService;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    "hbase.master.wait.on.service.seconds";<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.317"></a>
+<span class="sourceLineNo">313</span>  // Tracker for region normalizer state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  //Tracker for master maintenance mode setting<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Metrics for the HMaster<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  final MetricsMaster metricsMaster;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  // file system manager for the master FS operations<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private MasterFileSystem fileSystemManager;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private MasterWalManager walManager;<a name="line.323"></a>
+<span class="sourceLineNo">319</span>  private ClusterSchemaService clusterSchemaService;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    "hbase.master.wait.on.service.seconds";<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // server manager to deal with region server info<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private volatile ServerManager serverManager;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // manager of assignment nodes in zookeeper<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private AssignmentManager assignmentManager;<a name="line.329"></a>
+<span class="sourceLineNo">325</span>  // Metrics for the HMaster<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  final MetricsMaster metricsMaster;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // file system manager for the master FS operations<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private MasterFileSystem fileSystemManager;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private MasterWalManager walManager;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // manager of replication<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  // server manager to deal with region server info<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private volatile ServerManager serverManager;<a name="line.332"></a>
 <span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // buffer for "fatal error" notices from region servers<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  // in the cluster. This is only used for assisting<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // operations/debugging.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // flag set after we become the active master (used for testing)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private volatile boolean activeMaster = false;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // flag set after we complete initialization once active<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.343"></a>
+<span class="sourceLineNo">334</span>  // manager of assignment nodes in zookeeper<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  private AssignmentManager assignmentManager;<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // manager of replication<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // buffer for "fatal error" notices from region servers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // in the cluster. This is only used for assisting<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // operations/debugging.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  // flag set after master services are started,<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // initialization may have not completed yet.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  volatile boolean serviceStarted = false;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // flag set after we complete assignMeta.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // Maximum time we should run balancer for<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private final int maxBlancingTime;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // Maximum percent of regions in transition when balancing<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private final double maxRitPercent;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final LockManager lockManager = new LockManager(this);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private LoadBalancer balancer;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private RegionNormalizer normalizer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private BalancerChore balancerChore;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private RegionNormalizerChore normalizerChore;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private ClusterStatusChore clusterStatusChore;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  CatalogJanitor catalogJanitorChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private LogCleaner logCleaner;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private HFileCleaner hfileCleaner;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private MobCompactionChore mobCompactChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // used to synchronize the mobCompactionStates<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  // save the information of mob compactions in tables.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  MasterCoprocessorHost cpHost;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private final boolean preLoadTableDescriptors;<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  // Time stamps for when a hmaster became active<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private long masterActiveTime;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private long masterFinishedInitializationTime;<a name="line.388"></a>
+<span class="sourceLineNo">345</span>  // flag set after we become the active master (used for testing)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private volatile boolean activeMaster = false;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // flag set after we complete initialization once active<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // flag set after master services are started,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  // initialization may have not completed yet.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  volatile boolean serviceStarted = false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // flag set after we complete assignMeta.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // Maximum time we should run balancer for<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private final int maxBlancingTime;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // Maximum percent of regions in transition when balancing<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final double maxRitPercent;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private final LockManager lockManager = new LockManager(this);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private LoadBalancer balancer;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private RegionNormalizer normalizer;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private BalancerChore balancerChore;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private RegionNormalizerChore normalizerChore;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ClusterStatusChore clusterStatusChore;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  CatalogJanitor catalogJanitorChore;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  private LogCleaner logCleaner;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private HFileCleaner hfileCleaner;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private MobCompactionChore mobCompactChore;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  // used to synchronize the mobCompactionStates<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // save the information of mob compactions in tables.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  MasterCoprocessorHost cpHost;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private final boolean preLoadTableDescriptors;<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final boolean masterCheckCompression;<a name="line.391"></a>
+<span class="sourceLineNo">390</span>  // Time stamps for when a hmaster became active<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private long masterActiveTime;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  //should we check encryption settings at master side, default true<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final boolean masterCheckEncryption;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private long masterFinishedInitializationTime;<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // monitor for snapshot of hbase tables<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  SnapshotManager snapshotManager;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // monitor for distributed procedures<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private MasterProcedureManagerHost mpmHost;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private volatile MasterQuotaManager quotaManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  private QuotaObserverChore quotaObserverChore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.407"></a>
+<span class="sourceLineNo">396</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final boolean masterCheckCompression;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  //should we check encryption settings at master side, default true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private final boolean masterCheckEncryption;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  // monitor for snapshot of hbase tables<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  SnapshotManager snapshotManager;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // monitor for distributed procedures<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private MasterProcedureManagerHost mpmHost;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private WALProcedureStore procedureStore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // handle table states<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private TableStateManager tableStateManager;<a name="line.413"></a>
+<span class="sourceLineNo">409</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private volatile MasterQuotaManager quotaManager;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private QuotaObserverChore quotaObserverChore;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.413"></a>
 <span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  private long splitPlanCount;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  private long mergePlanCount;<a name="line.416"></a>
+<span class="sourceLineNo">415</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  private WALProcedureStore procedureStore;<a name="line.416"></a>
 <span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /* Handle favored nodes information */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private FavoredNodesManager favoredNodesManager;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  // handle table states<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private TableStateManager tableStateManager;<a name="line.419"></a>
 <span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private Server masterJettyServer;<a name="line.422"></a>
+<span class="sourceLineNo">421</span>  private long splitPlanCount;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private long mergePlanCount;<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static class RedirectServlet extends HttpServlet {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    private final int regionServerInfoPort;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    private final String regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    /**<a name="line.429"></a>
-<span class="sourceLineNo">430</span>     * @param infoServer that we're trying to send all requests to<a name="line.430"></a>
-<span class="sourceLineNo">431</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       regionServerInfoPort = infoServer.getPort();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       regionServerHostname = hostname;<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>    @Override<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    public void doGet(HttpServletRequest request,<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      String redirectHost = regionServerHostname;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if(redirectHost == null) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        redirectHost = request.getServerName();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.447"></a>
-<span class="sourceLineNo">448</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              "to an appropriate hostname.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String redirectUrl = request.getScheme() + "://"<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        + request.getRequestURI();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      response.sendRedirect(redirectUrl);<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><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Initializes the HMaster. The steps are as follows:<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * &lt;p&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * &lt;ol&gt;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;/ol&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Remaining steps of initialization occur in<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * the master becomes the active one.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public HMaster(final Configuration conf)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      throws IOException, KeeperException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    super(conf);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    TraceUtil.initTracer(conf);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>      // Disable usage of meta replicas in the master<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>      decorateMasterConfiguration(this.conf);<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">424</span>  /* Handle favored nodes information */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private FavoredNodesManager favoredNodesManager;<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private Server masterJettyServer;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static class RedirectServlet extends HttpServlet {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    private final int regionServerInfoPort;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private final String regionServerHostname;<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>     * @param infoServer that we're trying to send all requests to<a name="line.436"></a>
+<span class="sourceLineNo">437</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>     */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       regionServerInfoPort = infoServer.getPort();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       regionServerHostname = hostname;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public void doGet(HttpServletRequest request,<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String redirectHost = regionServerHostname;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      if(redirectHost == null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        redirectHost = request.getServerName();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.453"></a>
+<span class="sourceLineNo">454</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              "to an appropriate hostname.");<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.457"></a>
+<span class="sourceLineNo">458</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          return;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      String redirectUrl = request.getScheme() + "://"<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        + request.getRequestURI();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      response.sendRedirect(redirectUrl);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Initializes the HMaster. The steps are as follows:<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * &lt;p&gt;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * &lt;ol&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;/ol&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Remaining steps of initialization occur in<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * the master becomes the active one.<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public HMaster(final Configuration conf)<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      throws IOException, KeeperException {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    super(conf);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    TraceUtil.initTracer(conf);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>      // Disable usage of meta replicas in the master<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>      decorateMasterConfiguration(this.conf);<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      // should we check encryption settings at master side, default true<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.503"></a>
+<span class="sourceLineNo">499</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // preload table descriptor at startup<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      // Do we publish the status?<a name="line.514"></a>
+<span class="sourceLineNo">505</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>      // should we check encryption settings at master side, default true<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.511"></a>
+<span class="sourceLineNo">512</span><a name="line.512"></a>
+<span class="sourceLineNo">513</span>      // preload table descriptor at startup<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.514"></a>
 <span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              ClusterStatusPublisher.Publisher.class);<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (shouldPublish) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (publisherClass == null) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.525"></a>
-<span class="sourceLineNo">526</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              " is not set - not publishing status");<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        } else {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      } else {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        this.activeMasterManager = null;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } catch (Throwable t) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // cause of failed startup is lost.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      LOG.error("Failed construction of Master", t);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      throw t;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  @Override<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  // block in here until then.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    try {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        try {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          int infoPort = putUpJettyServer();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          startActiveMasterManager(infoPort);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>        } catch (Throwable t) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          // Make sure we log the exception.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          String error = "Failed to become Active Master";<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          LOG.error(error, t);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          // Abort should have been called already.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          if (!isAborted()) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            abort(error, t);<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>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      // the super run call will do this for us.<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      super.run();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    } finally {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      if (this.clusterSchemaService != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        // If on way out, then we are no longer active master.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        this.clusterSchemaService.stopAsync();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        try {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          this.clusterSchemaService.awaitTerminated(<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        } catch (TimeoutException te) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  // return the actual infoPort, -1 means disable info server.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private int putUpJettyServer() throws IOException {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      return -1;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    // -1 is for disabling info server, so no redirecting<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return -1;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if(infoPort == infoServer.getPort()) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return infoPort;<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.606"></a>
-<span class="sourceLine

<TRUNCATED>

[29/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
index e5e9803..a55d21c 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.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":9,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":9,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"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":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":9,"i131":10,"i132":9,"i133":10,"i134":10,"i135":10,"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":10,"i150":10,"i151":9,"i152":10,"i153":9,"i154":10,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":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":9,"i13":10,"i14":10,"i15":10,"i16":10,"i17":10,"i18":10,"i19":10,"i20":10,"i21":10,"i22":10,"i23":10,"i24":9,"i25":10,"i26":10,"i27":10,"i28":10,"i29":10,"i30":10,"i31":9,"i32":10,"i33":10,"i34":10,"i35":10,"i36":10,"i37":9,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":10,"i44":10,"i45":10,"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":10,"i68":10,"i69":10,"i70":10,"i71":10,"i72":10,"i73":10,"i74":10,"i75":10,"i76":10,"i77":10,"i78":10,"i79":10,"i80":10,"i81":10,"i82":10,"i83":10,"i84":10,"i85":10,"i86":10,"i87":10,"i88":10,"i89":10,"i90":10,"i91":10,"i92":10,"i93":10,"i94":10,"i95":10,"i96":10,"i97":10,"i98":10,"i99":10,"i100":10,"i101":10,"i102":10,"i103":10,"i104":10,"i105":10,"i106":10,"i107":10,"i108":10,"i109"
 :10,"i110":10,"i111":10,"i112":10,"i113":10,"i114":10,"i115":10,"i116":10,"i117":10,"i118":10,"i119":10,"i120":10,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":9,"i132":10,"i133":9,"i134":10,"i135":10,"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":10,"i150":10,"i151":10,"i152":9,"i153":10,"i154":9,"i155":10,"i156":10,"i157":10,"i158":10,"i159":10,"i160":10,"i161":10,"i162":10,"i163":10,"i164":10,"i165":10,"i166":10,"i167":10,"i168":10,"i169":10,"i170":10,"i171":10,"i172":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";
@@ -511,84 +511,88 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#shortOperationTimeout">shortOperationTimeout</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#shutDown">shutDown</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sleeper">sleeper</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/trace/SpanReceiverHost.html" title="class in org.apache.hadoop.hbase.trace">SpanReceiverHost</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#spanReceiverHost">spanReceiverHost</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">SplitLogWorker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#splitLogWorker">splitLogWorker</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startcode">startcode</a></span></code>
 <div class="block">This servers startcode.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stopped">stopped</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stopping">stopping</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#storefileRefresher">storefileRefresher</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/TableDescriptors.html" title="interface in org.apache.hadoop.hbase">TableDescriptors</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tableDescriptors">tableDescriptors</a></span></code>
 <div class="block">Go here to get table descriptors.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#TEST_SKIP_REPORTING_TRANSITION">TEST_SKIP_REPORTING_TRANSITION</a></span></code>
 <div class="block">For testing only!  Set to true to skip notifying region assignment to master .</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#threadWakeFrequency">threadWakeFrequency</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<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/regionserver/HRegionServer.html#TIMEOUT_REGION_MOVED">TIMEOUT_REGION_MOVED</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#uncaughtExceptionHandler">uncaughtExceptionHandler</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#userProvider">userProvider</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="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/regionserver/HRegionServer.html#useThisHostnameInstead">useThisHostnameInstead</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walFactory">walFactory</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/fs/HFileSystem.html" title="class in org.apache.hadoop.hbase.fs">HFileSystem</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walFs">walFs</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRoller">walRoller</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.fs.Path</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRootDir">walRootDir</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>protected <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#zooKeeper">zooKeeper</a></span></code>&nbsp;</td>
 </tr>
@@ -1245,34 +1249,38 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 </tr>
 <tr id="i125" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isShutDown--">isShutDown</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i126" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopped--">isStopped</a></span>()</code>&nbsp;</td>
 </tr>
 <tr id="i127" class="rowColor">
+<td class="colFirst"><code>boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#isStopping--">isStopping</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i128" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#keepLooping--">keepLooping</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#kill--">kill</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a></span>(<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a>&nbsp;user,
      <a href="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)</code>&nbsp;</td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#main-java.lang.String:A-">main</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;args)</code>&nbsp;</td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code>protected int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#movedRegionCleanerPeriod--">movedRegionCleanerPeriod</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>private static &lt;T extends <a href="../../../../../org/apache/hadoop/hbase/regionserver/ReplicationService.html" title="interface in org.apache.hadoop.hbase.regionserver">ReplicationService</a>&gt;<br>T</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#newReplicationInstance-java.lang.String-java.lang.Class-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.regionserver.HRegionServer-org.apache.hadoop.fs.FileSystem-org.apache.hadoop.fs.Path-org.apache.hadoop.fs.Path-org.apache.hadoop.hbase.wal.WALProvider-">newReplicationInstance</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;classname,
                       <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;T&gt;&nbsp;xface,
@@ -1283,34 +1291,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
                       org.apache.hadoop.fs.Path&nbsp;oldLogDir,
                       <a href="../../../../../org/apache/hadoop/hbase/wal/WALProvider.html" title="interface in org.apache.hadoop.hbase.wal">WALProvider</a>&nbsp;walProvider)</code>&nbsp;</td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#onConfigurationChange-org.apache.hadoop.conf.Configuration-">onConfigurationChange</a></span>(org.apache.hadoop.conf.Configuration&nbsp;newConf)</code>
 <div class="block">This method would be called by the <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf"><code>ConfigurationManager</code></a>
  object when the <code>Configuration</code> object is reloaded from disk.</div>
 </td>
 </tr>
-<tr id="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#postOpenDeployTasks-org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext-">postOpenDeployTasks</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.PostOpenDeployContext.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerServices.PostOpenDeployContext</a>&nbsp;context)</code>
 <div class="block">Tasks to perform after region open to complete deploy of region on
  regionserver</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#preRegistrationInitialization--">preRegistrationInitialization</a></span>()</code>
 <div class="block">All initialization needed before we go register with Master.<br>
  Do bare minimum.</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#putUpWebUI--">putUpWebUI</a></span>()</code>
 <div class="block">Puts up the webui.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/locking/EntityLock.html" title="class in org.apache.hadoop.hbase.client.locking">EntityLock</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#regionLock-java.util.List-java.lang.String-org.apache.hadoop.hbase.Abortable-">regionLock</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;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;regionInfos,
           <a href="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;description,
@@ -1318,34 +1326,34 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <div class="block">Master based locks on namespaces/tables/regions.</div>
 </td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#registerConfigurationObservers--">registerConfigurationObservers</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#registerService-com.google.protobuf.Service-">registerService</a></span>(com.google.protobuf.Service&nbsp;instance)</code>
 <div class="block">Registers a new protocol buffer <code>Service</code> subclass as a coprocessor endpoint to be
  available for handling</div>
 </td>
 </tr>
-<tr id="i140" class="altColor">
+<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/regionserver/HRegionServer.html#remoteProcedureComplete-long-java.lang.Throwable-">remoteProcedureComplete</a></span>(long&nbsp;procId,
                        <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;error)</code>&nbsp;</td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeFromMovedRegions-java.lang.String-">removeFromMovedRegions</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;encodedName)</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#removeRegion-org.apache.hadoop.hbase.regionserver.HRegion-org.apache.hadoop.hbase.ServerName-">removeRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;r,
             <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destination)</code>
 <div class="block">Removes the given Region from the list of onlineRegions.</div>
 </td>
 </tr>
-<tr id="i143" class="rowColor">
+<tr id="i144" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportFileArchivalForQuotas-org.apache.hadoop.hbase.TableName-java.util.Collection-">reportFileArchivalForQuotas</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&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/util/Map.Entry.html?is-external=true" title="class or interface in java.util">Map.Entry</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;archivedFiles)</code>
@@ -1353,90 +1361,90 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
  just moved to the archive directory.</div>
 </td>
 </tr>
-<tr id="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>private org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStartupResponse</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportForDuty--">reportForDuty</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportProcedureDone-org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest-">reportProcedureDone</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.ReportProcedureDoneRequest&nbsp;request)</code>&nbsp;</td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionSizesForQuotas-org.apache.hadoop.hbase.quotas.RegionSizeStore-">reportRegionSizesForQuotas</a></span>(<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionSizeStore.html" title="interface in org.apache.hadoop.hbase.quotas">RegionSizeStore</a>&nbsp;regionSizeStore)</code>
 <div class="block">Reports the given map of Regions and their size on the filesystem to the active Master.</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#reportRegionStateTransition-org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext-">reportRegionStateTransition</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerServices.RegionStateTransitionContext.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerServices.RegionStateTransitionContext</a>&nbsp;context)</code>
 <div class="block">Notify master that a handler requests to change a region state</div>
 </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/regionserver/HRegionServer.html#run--">run</a></span>()</code>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 </td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sendShutdownInterrupt--">sendShutdownInterrupt</a></span>()</code>
 <div class="block">Called on stop/abort before closing the cluster connection and meta locator.</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupClusterConnection--">setupClusterConnection</a></span>()</code>
 <div class="block">Setup our cluster connection if not already initialized.</div>
 </td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.html" title="class in org.apache.hadoop.hbase.util">NettyEventLoopGroupConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupNetty-org.apache.hadoop.conf.Configuration-">setupNetty</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i152" class="altColor">
+<tr id="i153" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupWALAndReplication--">setupWALAndReplication</a></span>()</code>
 <div class="block">Setup WAL log and replication if enabled.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#setupWindows-org.apache.hadoop.conf.Configuration-org.apache.hadoop.hbase.conf.ConfigurationManager-">setupWindows</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
             <a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a>&nbsp;cm)</code>
 <div class="block">If running on Windows, do windows-specific setup.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#shutdownWAL-boolean-">shutdownWAL</a></span>(boolean&nbsp;close)</code>&nbsp;</td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>private boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#sleep-long-">sleep</a></span>(long&nbsp;millis)</code>&nbsp;</td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startHeapMemoryManager--">startHeapMemoryManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i157" class="rowColor">
+<tr id="i158" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startReplicationService--">startReplicationService</a></span>()</code>
 <div class="block">Start up replication source and sink handlers.</div>
 </td>
 </tr>
-<tr id="i158" class="altColor">
+<tr id="i159" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#startServices--">startServices</a></span>()</code>&nbsp;</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/regionserver/HRegionServer.html#stop-java.lang.String-">stop</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;msg)</code>
 <div class="block">Stop this service.</div>
 </td>
 </tr>
-<tr id="i160" class="altColor">
+<tr id="i161" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stop-java.lang.String-boolean-org.apache.hadoop.hbase.security.User-">stop</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;msg,
     boolean&nbsp;force,
@@ -1444,61 +1452,61 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <div class="block">Stops the regionserver.</div>
 </td>
 </tr>
-<tr id="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#stopServiceThreads--">stopServiceThreads</a></span>()</code>
 <div class="block">Wait on all threads to finish.</div>
 </td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" 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/regionserver/HRegionServer.html#toString--">toString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#triggerFlushInPrimaryRegion-org.apache.hadoop.hbase.regionserver.HRegion-">triggerFlushInPrimaryRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.html" title="class in org.apache.hadoop.hbase.regionserver">HRegion</a>&nbsp;region)</code>
 <div class="block">Trigger a flush in the primary region replica if this region is a secondary replica.</div>
 </td>
 </tr>
-<tr id="i164" class="altColor">
+<tr id="i165" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#tryRegionServerReport-long-long-">tryRegionServerReport</a></span>(long&nbsp;reportStartTime,
                      long&nbsp;reportEndTime)</code>&nbsp;</td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#unassign-byte:A-">unassign</a></span>(byte[]&nbsp;regionName)</code>
 <div class="block">Unassign the given region from the current regionserver and assign it randomly.</div>
 </td>
 </tr>
-<tr id="i166" class="altColor">
+<tr id="i167" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateConfiguration--">updateConfiguration</a></span>()</code>
 <div class="block">Reload the configuration from disk.</div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#updateRegionFavoredNodesMapping-java.lang.String-java.util.List-">updateRegionFavoredNodesMapping</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;encodedRegionName,
                                <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.shaded.protobuf.generated.HBaseProtos.ServerName&gt;&nbsp;favoredNodes)</code>
 <div class="block">Used to update the favored nodes mapping when required.</div>
 </td>
 </tr>
-<tr id="i168" class="altColor">
+<tr id="i169" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitForServerOnline--">waitForServerOnline</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#waitOnAllRegionsToClose-boolean-">waitOnAllRegionsToClose</a></span>(boolean&nbsp;abort)</code>
 <div class="block">Wait on regions close.</div>
 </td>
 </tr>
-<tr id="i171" class="rowColor">
+<tr id="i172" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html#walRollRequestFinished--">walRollRequestFinished</a></span>()</code>
 <div class="block">For testing</div>
@@ -1770,13 +1778,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.326">killed</a></pre>
 </li>
 </ul>
+<a name="shutDown">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>shutDown</h4>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.328">shutDown</a></pre>
+</li>
+</ul>
 <a name="conf">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>conf</h4>
-<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.328">conf</a></pre>
+<pre>protected final&nbsp;org.apache.hadoop.conf.Configuration <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.330">conf</a></pre>
 </li>
 </ul>
 <a name="rootDir">
@@ -1785,7 +1802,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rootDir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.330">rootDir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.332">rootDir</a></pre>
 </li>
 </ul>
 <a name="walRootDir">
@@ -1794,7 +1811,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walRootDir</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.331">walRootDir</a></pre>
+<pre>private&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.333">walRootDir</a></pre>
 </li>
 </ul>
 <a name="lock">
@@ -1803,7 +1820,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>lock</h4>
-<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.333">lock</a></pre>
+<pre>protected final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/locks/ReentrantReadWriteLock.html?is-external=true" title="class or interface in java.util.concurrent.locks">ReentrantReadWriteLock</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.335">lock</a></pre>
 </li>
 </ul>
 <a name="numRetries">
@@ -1812,7 +1829,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>numRetries</h4>
-<pre>final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.335">numRetries</a></pre>
+<pre>final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.337">numRetries</a></pre>
 </li>
 </ul>
 <a name="threadWakeFrequency">
@@ -1821,7 +1838,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>threadWakeFrequency</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.336">threadWakeFrequency</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.338">threadWakeFrequency</a></pre>
 </li>
 </ul>
 <a name="msgInterval">
@@ -1830,7 +1847,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>msgInterval</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.337">msgInterval</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.339">msgInterval</a></pre>
 </li>
 </ul>
 <a name="numRegionsToReport">
@@ -1839,7 +1856,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>numRegionsToReport</h4>
-<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.339">numRegionsToReport</a></pre>
+<pre>protected final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.341">numRegionsToReport</a></pre>
 </li>
 </ul>
 <a name="rssStub">
@@ -1848,7 +1865,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rssStub</h4>
-<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.342">rssStub</a></pre>
+<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos.RegionServerStatusService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.344">rssStub</a></pre>
 </li>
 </ul>
 <a name="lockStub">
@@ -1857,7 +1874,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>lockStub</h4>
-<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.343">lockStub</a></pre>
+<pre>private volatile&nbsp;org.apache.hadoop.hbase.shaded.protobuf.generated.LockServiceProtos.LockService.BlockingInterface <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.345">lockStub</a></pre>
 </li>
 </ul>
 <a name="rpcClient">
@@ -1866,7 +1883,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcClient</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" title="interface in org.apache.hadoop.hbase.ipc">RpcClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.345">rpcClient</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ipc/RpcClient.html" title="interface in org.apache.hadoop.hbase.ipc">RpcClient</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.347">rpcClient</a></pre>
 </li>
 </ul>
 <a name="rpcRetryingCallerFactory">
@@ -1875,7 +1892,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcRetryingCallerFactory</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.347">rpcRetryingCallerFactory</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RpcRetryingCallerFactory.html" title="class in org.apache.hadoop.hbase.client">RpcRetryingCallerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.349">rpcRetryingCallerFactory</a></pre>
 </li>
 </ul>
 <a name="rpcControllerFactory">
@@ -1884,7 +1901,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcControllerFactory</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.348">rpcControllerFactory</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcControllerFactory.html" title="class in org.apache.hadoop.hbase.ipc">RpcControllerFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.350">rpcControllerFactory</a></pre>
 </li>
 </ul>
 <a name="uncaughtExceptionHandler">
@@ -1893,7 +1910,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>uncaughtExceptionHandler</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.350">uncaughtExceptionHandler</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.UncaughtExceptionHandler.html?is-external=true" title="class or interface in java.lang">Thread.UncaughtExceptionHandler</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.352">uncaughtExceptionHandler</a></pre>
 </li>
 </ul>
 <a name="infoServer">
@@ -1902,7 +1919,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>infoServer</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.355">infoServer</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.357">infoServer</a></pre>
 </li>
 </ul>
 <a name="pauseMonitor">
@@ -1911,7 +1928,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>pauseMonitor</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.356">pauseMonitor</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/JvmPauseMonitor.html" title="class in org.apache.hadoop.hbase.util">JvmPauseMonitor</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.358">pauseMonitor</a></pre>
 </li>
 </ul>
 <a name="REGIONSERVER">
@@ -1920,7 +1937,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.359">REGIONSERVER</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.361">REGIONSERVER</a></pre>
 <div class="block">region server process name</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -1934,7 +1951,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsRegionServer</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.361">metricsRegionServer</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.363">metricsRegionServer</a></pre>
 </li>
 </ul>
 <a name="metricsTable">
@@ -1943,7 +1960,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>metricsTable</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsTable.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsTable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.362">metricsTable</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/MetricsTable.html" title="class in org.apache.hadoop.hbase.regionserver">MetricsTable</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.364">metricsTable</a></pre>
 </li>
 </ul>
 <a name="spanReceiverHost">
@@ -1952,7 +1969,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>spanReceiverHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/trace/SpanReceiverHost.html" title="class in org.apache.hadoop.hbase.trace">SpanReceiverHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.363">spanReceiverHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/trace/SpanReceiverHost.html" title="class in org.apache.hadoop.hbase.trace">SpanReceiverHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.365">spanReceiverHost</a></pre>
 </li>
 </ul>
 <a name="choreService">
@@ -1961,7 +1978,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>choreService</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.368">choreService</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ChoreService.html" title="class in org.apache.hadoop.hbase">ChoreService</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.370">choreService</a></pre>
 <div class="block">ChoreService used to schedule tasks that we want to run periodically</div>
 </li>
 </ul>
@@ -1971,7 +1988,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>compactionChecker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.373">compactionChecker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.375">compactionChecker</a></pre>
 </li>
 </ul>
 <a name="periodicFlusher">
@@ -1980,7 +1997,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>periodicFlusher</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.378">periodicFlusher</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.380">periodicFlusher</a></pre>
 </li>
 </ul>
 <a name="walFactory">
@@ -1989,7 +2006,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walFactory</h4>
-<pre>protected volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.380">walFactory</a></pre>
+<pre>protected volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/wal/WALFactory.html" title="class in org.apache.hadoop.hbase.wal">WALFactory</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.382">walFactory</a></pre>
 </li>
 </ul>
 <a name="walRoller">
@@ -1998,7 +2015,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>walRoller</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.384">walRoller</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/LogRoller.html" title="class in org.apache.hadoop.hbase.regionserver">LogRoller</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.386">walRoller</a></pre>
 </li>
 </ul>
 <a name="procedureResultReporter">
@@ -2007,7 +2024,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>procedureResultReporter</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.html" title="class in org.apache.hadoop.hbase.regionserver">RemoteProcedureResultReporter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.387">procedureResultReporter</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RemoteProcedureResultReporter.html" title="class in org.apache.hadoop.hbase.regionserver">RemoteProcedureResultReporter</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.389">procedureResultReporter</a></pre>
 </li>
 </ul>
 <a name="online">
@@ -2016,7 +2033,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>online</h4>
-<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.390">online</a></pre>
+<pre>final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/atomic/AtomicBoolean.html?is-external=true" title="class or interface in java.util.concurrent.atomic">AtomicBoolean</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.392">online</a></pre>
 </li>
 </ul>
 <a name="zooKeeper">
@@ -2025,7 +2042,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>zooKeeper</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.393">zooKeeper</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.395">zooKeeper</a></pre>
 </li>
 </ul>
 <a name="masterAddressTracker">
@@ -2034,7 +2051,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>masterAddressTracker</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterAddressTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.396">masterAddressTracker</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/MasterAddressTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">MasterAddressTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.398">masterAddressTracker</a></pre>
 </li>
 </ul>
 <a name="clusterStatusTracker">
@@ -2043,7 +2060,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterStatusTracker</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ClusterStatusTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.399">clusterStatusTracker</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ClusterStatusTracker.html" title="class in org.apache.hadoop.hbase.zookeeper">ClusterStatusTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.401">clusterStatusTracker</a></pre>
 </li>
 </ul>
 <a name="splitLogWorker">
@@ -2052,7 +2069,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>splitLogWorker</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">SplitLogWorker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.402">splitLogWorker</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SplitLogWorker.html" title="class in org.apache.hadoop.hbase.regionserver">SplitLogWorker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.404">splitLogWorker</a></pre>
 </li>
 </ul>
 <a name="sleeper">
@@ -2061,7 +2078,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>sleeper</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.405">sleeper</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/Sleeper.html" title="class in org.apache.hadoop.hbase.util">Sleeper</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.407">sleeper</a></pre>
 </li>
 </ul>
 <a name="operationTimeout">
@@ -2070,7 +2087,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>operationTimeout</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.407">operationTimeout</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.409">operationTimeout</a></pre>
 </li>
 </ul>
 <a name="shortOperationTimeout">
@@ -2079,7 +2096,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>shortOperationTimeout</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.408">shortOperationTimeout</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.410">shortOperationTimeout</a></pre>
 </li>
 </ul>
 <a name="regionServerAccounting">
@@ -2088,7 +2105,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerAccounting</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.410">regionServerAccounting</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerAccounting.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerAccounting</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.412">regionServerAccounting</a></pre>
 </li>
 </ul>
 <a name="cacheConfig">
@@ -2097,7 +2114,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>cacheConfig</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.413">cacheConfig</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.html" title="class in org.apache.hadoop.hbase.io.hfile">CacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.415">cacheConfig</a></pre>
 </li>
 </ul>
 <a name="mobCacheConfig">
@@ -2106,7 +2123,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>mobCacheConfig</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mob/MobCacheConfig.html" title="class in org.apache.hadoop.hbase.mob">MobCacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.415">mobCacheConfig</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mob/MobCacheConfig.html" title="class in org.apache.hadoop.hbase.mob">MobCacheConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.417">mobCacheConfig</a></pre>
 </li>
 </ul>
 <a name="healthCheckChore">
@@ -2115,7 +2132,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>healthCheckChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.418">healthCheckChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HealthCheckChore.html" title="class in org.apache.hadoop.hbase">HealthCheckChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.420">healthCheckChore</a></pre>
 <div class="block">The health check chore.</div>
 </li>
 </ul>
@@ -2125,7 +2142,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceManagerChore</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.421">nonceManagerChore</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.423">nonceManagerChore</a></pre>
 <div class="block">The nonce manager chore.</div>
 </li>
 </ul>
@@ -2135,7 +2152,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>coprocessorServiceHandlers</h4>
-<pre>private&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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.423">coprocessorServiceHandlers</a></pre>
+<pre>private&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="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,com.google.protobuf.Service&gt; <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.425">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="serverName">
@@ -2144,7 +2161,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>serverName</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.430">serverName</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.432">serverName</a></pre>
 <div class="block">The server name the Master sees us as.  Its made from the hostname the
  master passes us, port, and server startcode. Gets set after registration
  against  Master.</div>
@@ -2156,7 +2173,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <ul class="blockList">
 <li class="blockList">
 <h4>useThisHostnameInstead</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.435">useThisHostnameInstead</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.437">useThisHostnameInstead</a></pre>
 </li>
 </ul>
 <a name="RS_HOSTNAME_KEY">
@@ -2166,7 +2183,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionSe
 <li class="blockList">
 <h4>RS_HOSTNAME_KEY</h4>
 <pre>@InterfaceAudience.LimitedPrivate(value="Configuration")
-static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.441">RS_HOSTNAME_KEY</a></pre>
+static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.443">RS_HOSTNAME_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.RS_HOSTNAME_KEY">Constant Field Values</a></dd>
@@ -2180,7 +2197,7 @@ static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/S
 <li class="blockList">
 <h4>MASTER_HOSTNAME_KEY</h4>
 <pre>@InterfaceAudience.LimitedPrivate(value="Configuration")
-protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.443">MASTER_HOSTNAME_KEY</a></pre>
+protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.445">MASTER_HOSTNAME_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.MASTER_HOSTNAME_KEY">Constant Field Values</a></dd>
@@ -2193,7 +2210,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY</h4>
-<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.447">RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY</a></pre>
+<pre>static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.449">RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY">Constant Field Values</a></dd>
@@ -2206,7 +2223,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>startcode</h4>
-<pre>protected final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.453">startcode</a></pre>
+<pre>protected final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.455">startcode</a></pre>
 <div class="block">This servers startcode.</div>
 </li>
 </ul>
@@ -2216,7 +2233,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>clusterId</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.458">clusterId</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.460">clusterId</a></pre>
 <div class="block">Unique identifier for the cluster we are a part of.</div>
 </li>
 </ul>
@@ -2226,7 +2243,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>mxBean</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true" title="class or interface in javax.management">ObjectName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.463">mxBean</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/javax/management/ObjectName.html?is-external=true" title="class or interface in javax.management">ObjectName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.465">mxBean</a></pre>
 <div class="block">MX Bean for RegionServerInfo</div>
 </li>
 </ul>
@@ -2236,7 +2253,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>movedRegionsCleaner</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.468">movedRegionsCleaner</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionsCleaner.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer.MovedRegionsCleaner</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.470">movedRegionsCleaner</a></pre>
 <div class="block">Chore to clean periodically the moved region list</div>
 </li>
 </ul>
@@ -2246,7 +2263,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>storefileRefresher</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.471">storefileRefresher</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/StorefileRefresherChore.html" title="class in org.apache.hadoop.hbase.regionserver">StorefileRefresherChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.473">storefileRefresher</a></pre>
 </li>
 </ul>
 <a name="rsHost">
@@ -2255,7 +2272,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>rsHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.473">rsHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RegionServerCoprocessorHost.html" title="class in org.apache.hadoop.hbase.regionserver">RegionServerCoprocessorHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.475">rsHost</a></pre>
 </li>
 </ul>
 <a name="rspmHost">
@@ -2264,7 +2281,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>rspmHost</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/RegionServerProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">RegionServerProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.475">rspmHost</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/procedure/RegionServerProcedureManagerHost.html" title="class in org.apache.hadoop.hbase.procedure">RegionServerProcedureManagerHost</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.477">rspmHost</a></pre>
 </li>
 </ul>
 <a name="rsQuotaManager">
@@ -2273,7 +2290,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>rsQuotaManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">RegionServerRpcQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.477">rsQuotaManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionServerRpcQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">RegionServerRpcQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.479">rsQuotaManager</a></pre>
 </li>
 </ul>
 <a name="rsSpaceQuotaManager">
@@ -2282,7 +2299,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>rsSpaceQuotaManager</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">RegionServerSpaceQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.478">rsSpaceQuotaManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/RegionServerSpaceQuotaManager.html" title="class in org.apache.hadoop.hbase.quotas">RegionServerSpaceQuotaManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.480">rsSpaceQuotaManager</a></pre>
 </li>
 </ul>
 <a name="nonceManager">
@@ -2291,7 +2308,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>nonceManager</h4>
-<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">ServerNonceManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.498">nonceManager</a></pre>
+<pre>final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/ServerNonceManager.html" title="class in org.apache.hadoop.hbase.regionserver">ServerNonceManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.500">nonceManager</a></pre>
 <div class="block">Nonce manager. Nonces are used to make operations like increment and append idempotent
  in the case where client doesn't receive the response from a successful operation and
  retries. We track the successful ops for some time via a nonce sent by client and handle
@@ -2316,7 +2333,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>userProvider</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.500">userProvider</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/security/UserProvider.html" title="class in org.apache.hadoop.hbase.security">UserProvider</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.502">userProvider</a></pre>
 </li>
 </ul>
 <a name="rpcServices">
@@ -2325,7 +2342,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>rpcServices</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.502">rpcServices</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/RSRpcServices.html" title="class in org.apache.hadoop.hbase.regionserver">RSRpcServices</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.504">rpcServices</a></pre>
 </li>
 </ul>
 <a name="csm">
@@ -2334,7 +2351,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>csm</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CoordinatedStateManager.html" title="interface in org.apache.hadoop.hbase">CoordinatedStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.504">csm</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/CoordinatedStateManager.html" title="interface in org.apache.hadoop.hbase">CoordinatedStateManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.506">csm</a></pre>
 </li>
 </ul>
 <a name="configurationManager">
@@ -2343,7 +2360,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>configurationManager</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.510">configurationManager</a></pre>
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/conf/ConfigurationManager.html" title="class in org.apache.hadoop.hbase.conf">ConfigurationManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.512">configurationManager</a></pre>
 <div class="block">Configuration manager is used to register/deregister and notify the configuration observers
  when the regionserver is notified that there was a change in the on disk configs.</div>
 </li>
@@ -2354,7 +2371,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>compactedFileDischarger</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.html" title="class in org.apache.hadoop.hbase.regionserver">CompactedHFilesDischarger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.513">compactedFileDischarger</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactedHFilesDischarger.html" title="class in org.apache.hadoop.hbase.regionserver">CompactedHFilesDischarger</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.515">compactedFileDischarger</a></pre>
 </li>
 </ul>
 <a name="flushThroughputController">
@@ -2363,7 +2380,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>flushThroughputController</h4>
-<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.515">flushThroughputController</a></pre>
+<pre>private volatile&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/throttle/ThroughputController.html" title="interface in org.apache.hadoop.hbase.regionserver.throttle">ThroughputController</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.517">flushThroughputController</a></pre>
 </li>
 </ul>
 <a name="secureBulkLoadManager">
@@ -2372,7 +2389,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>secureBulkLoadManager</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html" title="class in org.apache.hadoop.hbase.regionserver">SecureBulkLoadManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.517">secureBulkLoadManager</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/SecureBulkLoadManager.html" title="class in org.apache.hadoop.hbase.regionserver">SecureBulkLoadManager</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.519">secureBulkLoadManager</a></pre>
 </li>
 </ul>
 <a name="fsUtilizationChore">
@@ -2381,7 +2398,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>fsUtilizationChore</h4>
-<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class in org.apache.hadoop.hbase.quotas">FileSystemUtilizationChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.519">fsUtilizationChore</a></pre>
+<pre>protected&nbsp;<a href="../../../../../org/apache/hadoop/hbase/quotas/FileSystemUtilizationChore.html" title="class in org.apache.hadoop.hbase.quotas">FileSystemUtilizationChore</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.521">fsUtilizationChore</a></pre>
 </li>
 </ul>
 <a name="eventLoopGroupConfig">
@@ -2390,7 +2407,7 @@ protected static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/j
 <ul class="blockList">
 <li class="blockList">
 <h4>eventLoopGroupConfig</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.html" title="class in org.apache.hadoop.hbase.util">NettyEventLoopGroupConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.521">eventLoopGroupConfig</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/util/NettyEventLoopGroupConfig.html" title="class in org.apache.hadoop.hbase.util">NettyEventLoopGroupConfig</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionse

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
index 32a8ed1..7aeb6fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html
@@ -333,3464 +333,3478 @@
 <span class="sourceLineNo">325</span><a name="line.325"></a>
 <span class="sourceLineNo">326</span>  volatile boolean killed = false;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected final Configuration conf;<a name="line.328"></a>
+<span class="sourceLineNo">328</span>  private volatile boolean shutDown = false;<a name="line.328"></a>
 <span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private Path rootDir;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private Path walRootDir;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.333"></a>
+<span class="sourceLineNo">330</span>  protected final Configuration conf;<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Path rootDir;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private Path walRootDir;<a name="line.333"></a>
 <span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  final int numRetries;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  protected final int threadWakeFrequency;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected final int msgInterval;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  protected final int numRegionsToReport;<a name="line.339"></a>
+<span class="sourceLineNo">335</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  final int numRetries;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected final int threadWakeFrequency;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  protected final int msgInterval;<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  // Stub to do region server status calls against the master.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  RpcClient rpcClient;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.350"></a>
+<span class="sourceLineNo">341</span>  protected final int numRegionsToReport;<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // Stub to do region server status calls against the master.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  RpcClient rpcClient;<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // into web context.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  protected InfoServer infoServer;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private JvmPauseMonitor pauseMonitor;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** region server process name */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public static final String REGIONSERVER = "regionserver";<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  MetricsRegionServer metricsRegionServer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  MetricsTable metricsTable;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private SpanReceiverHost spanReceiverHost;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ChoreService choreService;<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>   * Check for compactions requests.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  ScheduledChore compactionChecker;<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Check for flushes<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  ScheduledChore periodicFlusher;<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  protected volatile WALFactory walFactory;<a name="line.380"></a>
+<span class="sourceLineNo">352</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  // into web context.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  protected InfoServer infoServer;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private JvmPauseMonitor pauseMonitor;<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /** region server process name */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public static final String REGIONSERVER = "regionserver";<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  MetricsRegionServer metricsRegionServer;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  MetricsTable metricsTable;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private SpanReceiverHost spanReceiverHost;<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>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ChoreService choreService;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Check for compactions requests.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  ScheduledChore compactionChecker;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /*<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Check for flushes<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  ScheduledChore periodicFlusher;<a name="line.380"></a>
 <span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  // WAL roller. log is protected rather than private to avoid<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // eclipse warning when accessed by inner classes<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  protected LogRoller walRoller;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // A thread which calls reportProcedureDone<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  // flag set after we're done setting up server threads<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // zookeeper connection and watcher<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected final ZKWatcher zooKeeper;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // master address tracker<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // Cluster Status Tracker<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  // Log Splitting Worker<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private SplitLogWorker splitLogWorker;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // A sleeper that sleeps for msgInterval.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  protected final Sleeper sleeper;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final int operationTimeout;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private final int shortOperationTimeout;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.410"></a>
+<span class="sourceLineNo">382</span>  protected volatile WALFactory walFactory;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // WAL roller. log is protected rather than private to avoid<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  // eclipse warning when accessed by inner classes<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  protected LogRoller walRoller;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  // A thread which calls reportProcedureDone<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  // flag set after we're done setting up server threads<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  // zookeeper connection and watcher<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected final ZKWatcher zooKeeper;<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // master address tracker<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  // Cluster Status Tracker<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  // Log Splitting Worker<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private SplitLogWorker splitLogWorker;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // A sleeper that sleeps for msgInterval.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected final Sleeper sleeper;<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private final int operationTimeout;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final int shortOperationTimeout;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // Cache configuration and block cache reference<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  protected CacheConfig cacheConfig;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // Cache configuration for mob<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  final MobCacheConfig mobCacheConfig;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /** The health check chore. */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private HealthCheckChore healthCheckChore;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /** The nonce manager chore. */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private ScheduledChore nonceManagerChore;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.423"></a>
+<span class="sourceLineNo">412</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  // Cache configuration and block cache reference<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  protected CacheConfig cacheConfig;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  // Cache configuration for mob<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  final MobCacheConfig mobCacheConfig;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  /** The health check chore. */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private HealthCheckChore healthCheckChore;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  /** The nonce manager chore. */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ScheduledChore nonceManagerChore;<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>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * against  Master.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  protected ServerName serverName;<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /*<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * hostname specified by hostname config<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected String useThisHostnameInstead;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  // key to the config parameter of server hostname<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  // both master and region server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.441"></a>
+<span class="sourceLineNo">425</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * against  Master.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  protected ServerName serverName;<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /*<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * hostname specified by hostname config<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  protected String useThisHostnameInstead;<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  // key to the config parameter of server hostname<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  // both master and region server<a name="line.441"></a>
 <span class="sourceLineNo">442</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  // Exception will be thrown if both are used.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * This servers startcode.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  protected final long startcode;<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>   * Unique identifier for the cluster we are a part of.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  protected String clusterId;<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * MX Bean for RegionServerInfo<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private ObjectName mxBean = null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * Chore to clean periodically the moved region list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  // chore for refreshing store files for secondary regions<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  private StorefileRefresherChore storefileRefresher;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  private RegionServerCoprocessorHost rsHost;<a name="line.473"></a>
+<span class="sourceLineNo">443</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  // Exception will be thrown if both are used.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * This servers startcode.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  protected final long startcode;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Unique identifier for the cluster we are a part of.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected String clusterId;<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * MX Bean for RegionServerInfo<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private ObjectName mxBean = null;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Chore to clean periodically the moved region list<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  // chore for refreshing store files for secondary regions<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  private StorefileRefresherChore storefileRefresher;<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.475"></a>
+<span class="sourceLineNo">475</span>  private RegionServerCoprocessorHost rsHost;<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<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>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * HBASE-3787) are:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  final ServerNonceManager nonceManager;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private UserProvider userProvider;<a name="line.500"></a>
+<span class="sourceLineNo">477</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * HBASE-3787) are:<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  final ServerNonceManager nonceManager;<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected final RSRpcServices rpcServices;<a name="line.502"></a>
+<span class="sourceLineNo">502</span>  private UserProvider userProvider;<a name="line.502"></a>
 <span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  protected CoordinatedStateManager csm;<a name="line.504"></a>
+<span class="sourceLineNo">504</span>  protected final RSRpcServices rpcServices;<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  protected final ConfigurationManager configurationManager;<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @VisibleForTesting<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  private volatile ThroughputController flushThroughputController;<a name="line.515"></a>
+<span class="sourceLineNo">506</span>  protected CoordinatedStateManager csm;<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>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected final ConfigurationManager configurationManager;<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.517"></a>
+<span class="sourceLineNo">517</span>  private volatile ThroughputController flushThroughputController;<a name="line.517"></a>
 <span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  protected FileSystemUtilizationChore fsUtilizationChore;<a name="line.519"></a>
+<span class="sourceLineNo">519</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.519"></a>
 <span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<a name="line.521"></a>
+<span class="sourceLineNo">521</span>  protected FileSystemUtilizationChore fsUtilizationChore;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  private final boolean masterless;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * Starts a HRegionServer at the default location<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  // Don't start any services or managers in here in the Constructor.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    super("RegionServer");  // thread name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TraceUtil.initTracer(conf);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      this.startcode = System.currentTimeMillis();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.conf = conf;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.fsOk = true;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      HFile.checkHFileVersion(this.conf);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      checkCodecs(this.conf);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      decorateRegionServerConfiguration(this.conf);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Disable usage of meta replicas in the regionserver<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Config'ed params<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.561"></a>
+<span class="sourceLineNo">523</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  private final boolean masterless;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<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>   * Starts a HRegionServer at the default location<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  // Don't start any services or managers in here in the Constructor.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    super("RegionServer");  // thread name<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    TraceUtil.initTracer(conf);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      this.startcode = System.currentTimeMillis();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      this.conf = conf;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      this.fsOk = true;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      HFile.checkHFileVersion(this.conf);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      checkCodecs(this.conf);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      decorateRegionServerConfiguration(this.conf);<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // Disable usage of meta replicas in the regionserver<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      // Config'ed params<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.561"></a>
 <span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.566"></a>
+<span class="sourceLineNo">563</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>      this.abortRequested = false;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      this.stopped = false;<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>      rpcServices = createRpcServices();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      String hostName =<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              : this.useThisHostnameInstead;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>      // login the zookeeper client principal (if using security)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      // login the server principal (if using secure Hadoop)<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      login(userProvider, hostName);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      // init superusers and add the server principal (if using security)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      // or process owner as default super user.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      Superusers.initialize(conf);<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      cacheConfig = new CacheConfig(conf);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        }<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>      initializeFileSystem();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>      this.configurationManager = new ConfigurationManager();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        // Open connection to zookeeper and set primary watcher<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        if (!this.masterless) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>          masterAddressTracker.start();<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          clusterStatusTracker.start();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          masterAddressTracker = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          clusterStatusTracker = null;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        zooKeeper = null;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        masterAddressTracker = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        clusterStatusTracker = null;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      this.rpcServices.start(zooKeeper);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // class HRS. TODO.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      this.choreService = new ChoreService(getName(), true);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      this.executorService = new ExecutorService(getName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      putUpWebUI();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } catch (Throwable t) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // cause of failed startup is lost.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      LOG.error("Failed construction RegionServer", t);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw t;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  // HMaster should override this method to load the specific config for master<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        throw new IOException(msg);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        return rpcServices.isa.getHostName();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return hostname;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  /**<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * If running on Windows, do windows-specific setup.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        public void handle(Signal signal) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          conf.reloadConfiguration();<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          cm.notifyAllObservers(conf);<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>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    NettyEventLoopGroupConfig nelgc =<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      new NettyEventLoopGroupConfig(conf, "RS-EventLoopGroup");<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    NettyRpcClientConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    NettyAsyncFSWALConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    return nelgc;<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>  private void initializeFileSystem() throws IOException {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    // Get fs instance used by this RS.  Do we use checksum verification in the hbase? If hbase<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    // checksum verification enabled, then automatically switch off hdfs checksum verification.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    FSUtils.setFsDefault(this.conf, FSUtils.getWALRootDir(this.conf));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    this.walFs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this.walRootDir = FSUtils.getWALRootDir(this.conf);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    // Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // underlying hadoop hdfs accessors will be going against wrong filesystem<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    // (unless all is set to defaults).<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    this.fs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    this.rootDir = FSUtils.getRootDir(this.conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    this.tableDescriptors = getFsTableDescriptors();<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>  protected TableDescriptors getFsTableDescriptors() throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return new FSTableDescriptors(this.conf,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.fs, this.rootDir, !canUpdateTableDescriptor(), false, getMetaTableObserver());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return null;<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    user.login("hbase.regionserver.keytab.file",<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      "hbase.regionserver.kerberos.principal", host);<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>  protected void waitForMasterActive() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>  protected String getProcessName() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return REGIONSERVER;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  protected boolean canCreateBaseZNode() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.masterless;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  protected boolean canUpdateTableDescriptor() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    return false;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return new RSRpcServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  protected void configureInfoServer() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return RSDumpServlet.class;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    /*<a name="line.753"></a>
-<span class="sourceLineNo">754</span>     * No stacking of instances is allowed for a single executorService name<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.756"></a>
-<span class="sourceLineNo">757</span>        instance.getDescriptorForType();<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.760"></a>
-<span class="sourceLineNo">761</span>          + " already registered, rejecting request from " + instance);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return false;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    if (LOG.isDebugEnabled()) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return true;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * @throws IOException<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  @VisibleForTesting<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // and remote invocations.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      serverName, rpcServices, rpcServices);<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>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @param c<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @throws IOException<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    // check to see if the codec list is available:<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    if (codecs == null) return;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    for (String codec : codecs) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        throw new IOException("Compression codec " + codec +<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          " not supported, aborting RS construction");<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><a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public String getClusterId() {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    return this.clusterId;<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>   * Setup our cluster connection if not already initialized.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @throws IOException<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (clusterConnection == null) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      clusterConnection = createClusterConnection();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      metaTableLocator = new MetaTableLocator();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   */<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  private void preRegistrationInitialization() {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    try {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      initializeZooKeeper();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      setupClusterConnection();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      // Setup RPC client for master communication<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    } catch (Throwable t) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      // Call stop if error or process will stick around for ever since server<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // puts up non-daemon threads.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      this.rpcServices.stop();<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * &lt;p&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * Finally open long-living server short-circuit connection.<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    justification="cluster Id znode read would give us correct response")<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // Nothing to do in here if no Master in the mix.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (this.masterless) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // block until a master is available.  No point in starting up if no master<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // running.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // when ready.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.860"></a>
+<span class="sourceLineNo">568</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      this.abortRequested = false;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      this.stopped = false;<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      rpcServices = createRpcServices();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      String hostName =<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              : this.useThisHostnameInstead;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // login the zookeeper client principal (if using security)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      // login the server principal (if using secure Hadoop)<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      login(userProvider, hostName);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      // init superusers and add the server principal (if using security)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      // or process owner as default super user.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Superusers.initialize(conf);<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      cacheConfig = new CacheConfig(conf);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>        @Override<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      };<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>      initializeFileSystem();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this.configurationManager = new ConfigurationManager();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Open connection to zookeeper and set primary watcher<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        if (!this.masterless) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          masterAddressTracker.start();<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          clusterStatusTracker.start();<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          masterAddressTracker = null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          clusterStatusTracker = null;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        zooKeeper = null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        masterAddressTracker = null;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        clusterStatusTracker = null;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.rpcServices.start(zooKeeper);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      // class HRS. TODO.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      this.choreService = new ChoreService(getName(), true);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      this.executorService = new ExecutorService(getName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      putUpWebUI();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    } catch (Throwable t) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      // cause of failed startup is lost.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      LOG.error("Failed construction RegionServer", t);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      throw t;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  // HMaster should override this method to load the specific config for master<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.659"></a>
+<span class="sourceLineNo">660</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        throw new IOException(msg);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        return rpcServices.isa.getHostName();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      }<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    } else {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      return hostname;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * If running on Windows, do windows-specific setup.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        public void handle(Signal signal) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          conf.reloadConfiguration();<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          cm.notifyAllObservers(conf);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      });<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    }<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>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    NettyEventLoopGroupConfig nelgc =<a name="line.688"></a>
+<span class="sourceLineNo">689</span>      new NettyEventLoopGroupConfig(conf

<TRUNCATED>

[35/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 eea9542..b385d9a 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,9 +167,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.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.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/BackupRestoreConstants.BackupCommand.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupRestoreConstants.BackupCommand</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/class-use/Abortable.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/Abortable.html b/devapidocs/org/apache/hadoop/hbase/class-use/Abortable.html
index 899c2eb..d4342c7 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/Abortable.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/Abortable.html
@@ -948,6 +948,15 @@
 <div class="block">Instantiate a ZooKeeper connection and watcher.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-boolean-">ZKWatcher</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
+         <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
+         boolean&nbsp;canCreateBaseZNode,
+         boolean&nbsp;clientZK)</code>
+<div class="block">Instantiate a ZooKeeper connection and watcher.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/class-use/Server.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/Server.html b/devapidocs/org/apache/hadoop/hbase/class-use/Server.html
index 81feef8..c47ce17 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/Server.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/Server.html
@@ -101,14 +101,18 @@
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
@@ -332,6 +336,47 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a> in <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> declared as <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a></code></td>
+<td class="colLast"><span class="typeNameLabel">ClientZKSyncer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#server">server</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing constructors, and an explanation">
+<caption><span>Constructors in <a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Constructor and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#ClientZKSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">ClientZKSyncer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+              <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+              <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html#MasterAddressSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MasterAddressSyncer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                   <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                   <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html#MetaLocationSyncer-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.zookeeper.ZKWatcher-org.apache.hadoop.hbase.Server-">MetaLocationSyncer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;watcher,
+                  <a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html" title="class in org.apache.hadoop.hbase.zookeeper">ZKWatcher</a>&nbsp;clientZkWatcher,
+                  <a href="../../../../../org/apache/hadoop/hbase/Server.html" title="interface in org.apache.hadoop.hbase">Server</a>&nbsp;server)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.regionserver">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/class-use/ZooKeeperConnectionException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ZooKeeperConnectionException.html b/devapidocs/org/apache/hadoop/hbase/class-use/ZooKeeperConnectionException.html
index 0478aee..6fbdeb5 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ZooKeeperConnectionException.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ZooKeeperConnectionException.html
@@ -280,6 +280,15 @@
 <div class="block">Instantiate a ZooKeeper connection and watcher.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/zookeeper/ZKWatcher.html#ZKWatcher-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.hbase.Abortable-boolean-boolean-">ZKWatcher</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+         <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;identifier,
+         <a href="../../../../../org/apache/hadoop/hbase/Abortable.html" title="interface in org.apache.hadoop.hbase">Abortable</a>&nbsp;abortable,
+         boolean&nbsp;canCreateBaseZNode,
+         boolean&nbsp;clientZK)</code>
+<div class="block">Instantiate a ZooKeeper connection and watcher.</div>
+</td>
+</tr>
 </tbody>
 </table>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 9166843..f93eaa3 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/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/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/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/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/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<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/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/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/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/2a4c7d89/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 2379a55..340bece 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,11 +273,11 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/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/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/HFileBlock.Writer.State.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">HFileBlock.Writer.State</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 <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>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 2061ab3..0678f9b 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -294,9 +294,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.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>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
index 0fbe52c..bcdf716 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.243">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.245">HMaster.InitializationMonitor</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" title="class in org.apache.hadoop.hbase.util">HasThread</a></pre>
 <div class="block">Protection against zombie master. Started once Master accepts active responsibility and
  starts taking over responsibilities. Allows a finite time window before giving up ownership.</div>
@@ -250,7 +250,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_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/master/HMaster.InitializationMonitor.html#line.245">TIMEOUT_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/master/HMaster.InitializationMonitor.html#line.247">TIMEOUT_KEY</a></pre>
 <div class="block">The amount of time in milliseconds to sleep before checking initialization status.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.246">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.248">TIMEOUT_DEFAULT</a></pre>
 </li>
 </ul>
 <a name="HALT_KEY">
@@ -273,7 +273,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_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/master/HMaster.InitializationMonitor.html#line.252">HALT_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/master/HMaster.InitializationMonitor.html#line.254">HALT_KEY</a></pre>
 <div class="block">When timeout expired and initialization has not complete, call <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/System.html?is-external=true#exit-int-" title="class or interface in java.lang"><code>System.exit(int)</code></a> when
  true, do nothing otherwise.</div>
 <dl>
@@ -288,7 +288,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>HALT_DEFAULT</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.253">HALT_DEFAULT</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.255">HALT_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.InitializationMonitor.HALT_DEFAULT">Constant Field Values</a></dd>
@@ -301,7 +301,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>master</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.255">master</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.257">master</a></pre>
 </li>
 </ul>
 <a name="timeout">
@@ -310,7 +310,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>timeout</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.256">timeout</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.258">timeout</a></pre>
 </li>
 </ul>
 <a name="haltOnTimeout">
@@ -319,7 +319,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>haltOnTimeout</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.257">haltOnTimeout</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.259">haltOnTimeout</a></pre>
 </li>
 </ul>
 </li>
@@ -336,7 +336,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>InitializationMonitor</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.260">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.262">InitializationMonitor</a>(<a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 <div class="block">Creates a Thread that monitors the <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--"><code>HMaster.isInitialized()</code></a> state.</div>
 </li>
 </ul>
@@ -354,7 +354,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/util/HasThread.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>run</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.269">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.271">run</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true#run--" title="class or interface in java.lang">run</a></code>&nbsp;in interface&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a></code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
index 8cb0224..56d7d0e 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html
@@ -136,7 +136,7 @@
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2736">HMaster.MasterStoppedException</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2761">HMaster.MasterStoppedException</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.html" title="class in org.apache.hadoop.hbase">DoNotRetryIOException</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -205,7 +205,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/DoNotRetryIOException.ht
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterStoppedException</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.2737">MasterStoppedException</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.2762">MasterStoppedException</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index ab3555b..d0ab335 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.424">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.430">HMaster.RedirectServlet</a>
 extends javax.servlet.http.HttpServlet</pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -243,7 +243,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serialVersionUID</h4>
-<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.425">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.431">serialVersionUID</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.master.HMaster.RedirectServlet.serialVersionUID">Constant Field Values</a></dd>
@@ -256,7 +256,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerInfoPort</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.426">regionServerInfoPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.432">regionServerInfoPort</a></pre>
 </li>
 </ul>
 <a name="regionServerHostname">
@@ -265,7 +265,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>regionServerHostname</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.427">regionServerHostname</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.433">regionServerHostname</a></pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RedirectServlet</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.433">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.439">RedirectServlet</a>(<a href="../../../../../org/apache/hadoop/hbase/http/InfoServer.html" title="class in org.apache.hadoop.hbase.http">InfoServer</a>&nbsp;infoServer,
                        <a href="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;hostname)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -305,7 +305,7 @@ extends javax.servlet.http.HttpServlet</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doGet</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.439">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.445">doGet</a>(javax.servlet.http.HttpServletRequest&nbsp;request,
                   javax.servlet.http.HttpServletResponse&nbsp;response)
            throws javax.servlet.ServletException,
                   <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>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
index 32a8ed1..7aeb6fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.PeriodicMemStoreFlusher.html
@@ -333,3464 +333,3478 @@
 <span class="sourceLineNo">325</span><a name="line.325"></a>
 <span class="sourceLineNo">326</span>  volatile boolean killed = false;<a name="line.326"></a>
 <span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected final Configuration conf;<a name="line.328"></a>
+<span class="sourceLineNo">328</span>  private volatile boolean shutDown = false;<a name="line.328"></a>
 <span class="sourceLineNo">329</span><a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private Path rootDir;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private Path walRootDir;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.333"></a>
+<span class="sourceLineNo">330</span>  protected final Configuration conf;<a name="line.330"></a>
+<span class="sourceLineNo">331</span><a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private Path rootDir;<a name="line.332"></a>
+<span class="sourceLineNo">333</span>  private Path walRootDir;<a name="line.333"></a>
 <span class="sourceLineNo">334</span><a name="line.334"></a>
-<span class="sourceLineNo">335</span>  final int numRetries;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  protected final int threadWakeFrequency;<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  protected final int msgInterval;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  protected final int numRegionsToReport;<a name="line.339"></a>
+<span class="sourceLineNo">335</span>  protected final ReentrantReadWriteLock lock = new ReentrantReadWriteLock();<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  final int numRetries;<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  protected final int threadWakeFrequency;<a name="line.338"></a>
+<span class="sourceLineNo">339</span>  protected final int msgInterval;<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  // Stub to do region server status calls against the master.<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  RpcClient rpcClient;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.350"></a>
+<span class="sourceLineNo">341</span>  protected final int numRegionsToReport;<a name="line.341"></a>
+<span class="sourceLineNo">342</span><a name="line.342"></a>
+<span class="sourceLineNo">343</span>  // Stub to do region server status calls against the master.<a name="line.343"></a>
+<span class="sourceLineNo">344</span>  private volatile RegionServerStatusService.BlockingInterface rssStub;<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  private volatile LockService.BlockingInterface lockStub;<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  // RPC client. Used to make the stub above that does region server status checking.<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  RpcClient rpcClient;<a name="line.347"></a>
+<span class="sourceLineNo">348</span><a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private RpcRetryingCallerFactory rpcRetryingCallerFactory;<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  private RpcControllerFactory rpcControllerFactory;<a name="line.350"></a>
 <span class="sourceLineNo">351</span><a name="line.351"></a>
-<span class="sourceLineNo">352</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // into web context.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  protected InfoServer infoServer;<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private JvmPauseMonitor pauseMonitor;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  /** region server process name */<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  public static final String REGIONSERVER = "regionserver";<a name="line.359"></a>
-<span class="sourceLineNo">360</span><a name="line.360"></a>
-<span class="sourceLineNo">361</span>  MetricsRegionServer metricsRegionServer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  MetricsTable metricsTable;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private SpanReceiverHost spanReceiverHost;<a name="line.363"></a>
-<span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>  /**<a name="line.365"></a>
-<span class="sourceLineNo">366</span>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.366"></a>
-<span class="sourceLineNo">367</span>   */<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ChoreService choreService;<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>   * Check for compactions requests.<a name="line.371"></a>
-<span class="sourceLineNo">372</span>   */<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  ScheduledChore compactionChecker;<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /*<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Check for flushes<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  ScheduledChore periodicFlusher;<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  protected volatile WALFactory walFactory;<a name="line.380"></a>
+<span class="sourceLineNo">352</span>  private UncaughtExceptionHandler uncaughtExceptionHandler;<a name="line.352"></a>
+<span class="sourceLineNo">353</span><a name="line.353"></a>
+<span class="sourceLineNo">354</span>  // Info server. Default access so can be used by unit tests. REGIONSERVER<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // is name of the webapp and the attribute name used stuffing this instance<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  // into web context.<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  protected InfoServer infoServer;<a name="line.357"></a>
+<span class="sourceLineNo">358</span>  private JvmPauseMonitor pauseMonitor;<a name="line.358"></a>
+<span class="sourceLineNo">359</span><a name="line.359"></a>
+<span class="sourceLineNo">360</span>  /** region server process name */<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public static final String REGIONSERVER = "regionserver";<a name="line.361"></a>
+<span class="sourceLineNo">362</span><a name="line.362"></a>
+<span class="sourceLineNo">363</span>  MetricsRegionServer metricsRegionServer;<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  MetricsTable metricsTable;<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  private SpanReceiverHost spanReceiverHost;<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>   * ChoreService used to schedule tasks that we want to run periodically<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   */<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ChoreService choreService;<a name="line.370"></a>
+<span class="sourceLineNo">371</span><a name="line.371"></a>
+<span class="sourceLineNo">372</span>  /*<a name="line.372"></a>
+<span class="sourceLineNo">373</span>   * Check for compactions requests.<a name="line.373"></a>
+<span class="sourceLineNo">374</span>   */<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  ScheduledChore compactionChecker;<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>  /*<a name="line.377"></a>
+<span class="sourceLineNo">378</span>   * Check for flushes<a name="line.378"></a>
+<span class="sourceLineNo">379</span>   */<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  ScheduledChore periodicFlusher;<a name="line.380"></a>
 <span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  // WAL roller. log is protected rather than private to avoid<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  // eclipse warning when accessed by inner classes<a name="line.383"></a>
-<span class="sourceLineNo">384</span>  protected LogRoller walRoller;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  // A thread which calls reportProcedureDone<a name="line.386"></a>
-<span class="sourceLineNo">387</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.387"></a>
-<span class="sourceLineNo">388</span><a name="line.388"></a>
-<span class="sourceLineNo">389</span>  // flag set after we're done setting up server threads<a name="line.389"></a>
-<span class="sourceLineNo">390</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.390"></a>
-<span class="sourceLineNo">391</span><a name="line.391"></a>
-<span class="sourceLineNo">392</span>  // zookeeper connection and watcher<a name="line.392"></a>
-<span class="sourceLineNo">393</span>  protected final ZKWatcher zooKeeper;<a name="line.393"></a>
-<span class="sourceLineNo">394</span><a name="line.394"></a>
-<span class="sourceLineNo">395</span>  // master address tracker<a name="line.395"></a>
-<span class="sourceLineNo">396</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // Cluster Status Tracker<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.399"></a>
-<span class="sourceLineNo">400</span><a name="line.400"></a>
-<span class="sourceLineNo">401</span>  // Log Splitting Worker<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  private SplitLogWorker splitLogWorker;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // A sleeper that sleeps for msgInterval.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  protected final Sleeper sleeper;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private final int operationTimeout;<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private final int shortOperationTimeout;<a name="line.408"></a>
-<span class="sourceLineNo">409</span><a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.410"></a>
+<span class="sourceLineNo">382</span>  protected volatile WALFactory walFactory;<a name="line.382"></a>
+<span class="sourceLineNo">383</span><a name="line.383"></a>
+<span class="sourceLineNo">384</span>  // WAL roller. log is protected rather than private to avoid<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  // eclipse warning when accessed by inner classes<a name="line.385"></a>
+<span class="sourceLineNo">386</span>  protected LogRoller walRoller;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  // A thread which calls reportProcedureDone<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  private RemoteProcedureResultReporter procedureResultReporter;<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>  // flag set after we're done setting up server threads<a name="line.391"></a>
+<span class="sourceLineNo">392</span>  final AtomicBoolean online = new AtomicBoolean(false);<a name="line.392"></a>
+<span class="sourceLineNo">393</span><a name="line.393"></a>
+<span class="sourceLineNo">394</span>  // zookeeper connection and watcher<a name="line.394"></a>
+<span class="sourceLineNo">395</span>  protected final ZKWatcher zooKeeper;<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  // master address tracker<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  private final MasterAddressTracker masterAddressTracker;<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  // Cluster Status Tracker<a name="line.400"></a>
+<span class="sourceLineNo">401</span>  protected final ClusterStatusTracker clusterStatusTracker;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  // Log Splitting Worker<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  private SplitLogWorker splitLogWorker;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // A sleeper that sleeps for msgInterval.<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  protected final Sleeper sleeper;<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  private final int operationTimeout;<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private final int shortOperationTimeout;<a name="line.410"></a>
 <span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // Cache configuration and block cache reference<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  protected CacheConfig cacheConfig;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // Cache configuration for mob<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  final MobCacheConfig mobCacheConfig;<a name="line.415"></a>
-<span class="sourceLineNo">416</span><a name="line.416"></a>
-<span class="sourceLineNo">417</span>  /** The health check chore. */<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private HealthCheckChore healthCheckChore;<a name="line.418"></a>
-<span class="sourceLineNo">419</span><a name="line.419"></a>
-<span class="sourceLineNo">420</span>  /** The nonce manager chore. */<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private ScheduledChore nonceManagerChore;<a name="line.421"></a>
-<span class="sourceLineNo">422</span><a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.423"></a>
+<span class="sourceLineNo">412</span>  private final RegionServerAccounting regionServerAccounting;<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  // Cache configuration and block cache reference<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  protected CacheConfig cacheConfig;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  // Cache configuration for mob<a name="line.416"></a>
+<span class="sourceLineNo">417</span>  final MobCacheConfig mobCacheConfig;<a name="line.417"></a>
+<span class="sourceLineNo">418</span><a name="line.418"></a>
+<span class="sourceLineNo">419</span>  /** The health check chore. */<a name="line.419"></a>
+<span class="sourceLineNo">420</span>  private HealthCheckChore healthCheckChore;<a name="line.420"></a>
+<span class="sourceLineNo">421</span><a name="line.421"></a>
+<span class="sourceLineNo">422</span>  /** The nonce manager chore. */<a name="line.422"></a>
+<span class="sourceLineNo">423</span>  private ScheduledChore nonceManagerChore;<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>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * against  Master.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   */<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  protected ServerName serverName;<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /*<a name="line.432"></a>
-<span class="sourceLineNo">433</span>   * hostname specified by hostname config<a name="line.433"></a>
-<span class="sourceLineNo">434</span>   */<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  protected String useThisHostnameInstead;<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  // key to the config parameter of server hostname<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  // both master and region server<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.440"></a>
-<span class="sourceLineNo">441</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.441"></a>
+<span class="sourceLineNo">425</span>  private Map&lt;String, com.google.protobuf.Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /**<a name="line.427"></a>
+<span class="sourceLineNo">428</span>   * The server name the Master sees us as.  Its made from the hostname the<a name="line.428"></a>
+<span class="sourceLineNo">429</span>   * master passes us, port, and server startcode. Gets set after registration<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * against  Master.<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   */<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  protected ServerName serverName;<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>  /*<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * hostname specified by hostname config<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   */<a name="line.436"></a>
+<span class="sourceLineNo">437</span>  protected String useThisHostnameInstead;<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  // key to the config parameter of server hostname<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  // the specification of server hostname is optional. The hostname should be resolvable from<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  // both master and region server<a name="line.441"></a>
 <span class="sourceLineNo">442</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.443"></a>
-<span class="sourceLineNo">444</span><a name="line.444"></a>
-<span class="sourceLineNo">445</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.445"></a>
-<span class="sourceLineNo">446</span>  // Exception will be thrown if both are used.<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.448"></a>
-<span class="sourceLineNo">449</span><a name="line.449"></a>
-<span class="sourceLineNo">450</span>  /**<a name="line.450"></a>
-<span class="sourceLineNo">451</span>   * This servers startcode.<a name="line.451"></a>
-<span class="sourceLineNo">452</span>   */<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  protected final long startcode;<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>   * Unique identifier for the cluster we are a part of.<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   */<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  protected String clusterId;<a name="line.458"></a>
-<span class="sourceLineNo">459</span><a name="line.459"></a>
-<span class="sourceLineNo">460</span>  /**<a name="line.460"></a>
-<span class="sourceLineNo">461</span>   * MX Bean for RegionServerInfo<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   */<a name="line.462"></a>
-<span class="sourceLineNo">463</span>  private ObjectName mxBean = null;<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>  /**<a name="line.465"></a>
-<span class="sourceLineNo">466</span>   * Chore to clean periodically the moved region list<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   */<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  // chore for refreshing store files for secondary regions<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  private StorefileRefresherChore storefileRefresher;<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  private RegionServerCoprocessorHost rsHost;<a name="line.473"></a>
+<span class="sourceLineNo">443</span>  final static String RS_HOSTNAME_KEY = "hbase.regionserver.hostname";<a name="line.443"></a>
+<span class="sourceLineNo">444</span>  @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.CONFIG)<a name="line.444"></a>
+<span class="sourceLineNo">445</span>  protected final static String MASTER_HOSTNAME_KEY = "hbase.master.hostname";<a name="line.445"></a>
+<span class="sourceLineNo">446</span><a name="line.446"></a>
+<span class="sourceLineNo">447</span>  // HBASE-18226: This config and hbase.regionserver.hostname are mutually exclusive.<a name="line.447"></a>
+<span class="sourceLineNo">448</span>  // Exception will be thrown if both are used.<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  final static String RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY =<a name="line.449"></a>
+<span class="sourceLineNo">450</span>    "hbase.regionserver.hostname.disable.master.reversedns";<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  /**<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   * This servers startcode.<a name="line.453"></a>
+<span class="sourceLineNo">454</span>   */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  protected final long startcode;<a name="line.455"></a>
+<span class="sourceLineNo">456</span><a name="line.456"></a>
+<span class="sourceLineNo">457</span>  /**<a name="line.457"></a>
+<span class="sourceLineNo">458</span>   * Unique identifier for the cluster we are a part of.<a name="line.458"></a>
+<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  protected String clusterId;<a name="line.460"></a>
+<span class="sourceLineNo">461</span><a name="line.461"></a>
+<span class="sourceLineNo">462</span>  /**<a name="line.462"></a>
+<span class="sourceLineNo">463</span>   * MX Bean for RegionServerInfo<a name="line.463"></a>
+<span class="sourceLineNo">464</span>   */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  private ObjectName mxBean = null;<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>  /**<a name="line.467"></a>
+<span class="sourceLineNo">468</span>   * Chore to clean periodically the moved region list<a name="line.468"></a>
+<span class="sourceLineNo">469</span>   */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  private MovedRegionsCleaner movedRegionsCleaner;<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  // chore for refreshing store files for secondary regions<a name="line.472"></a>
+<span class="sourceLineNo">473</span>  private StorefileRefresherChore storefileRefresher;<a name="line.473"></a>
 <span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.475"></a>
+<span class="sourceLineNo">475</span>  private RegionServerCoprocessorHost rsHost;<a name="line.475"></a>
 <span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<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>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.481"></a>
-<span class="sourceLineNo">482</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.482"></a>
-<span class="sourceLineNo">483</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.483"></a>
-<span class="sourceLineNo">484</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.484"></a>
-<span class="sourceLineNo">485</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * HBASE-3787) are:<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.493"></a>
-<span class="sourceLineNo">494</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.494"></a>
-<span class="sourceLineNo">495</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.495"></a>
-<span class="sourceLineNo">496</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.496"></a>
-<span class="sourceLineNo">497</span>   */<a name="line.497"></a>
-<span class="sourceLineNo">498</span>  final ServerNonceManager nonceManager;<a name="line.498"></a>
-<span class="sourceLineNo">499</span><a name="line.499"></a>
-<span class="sourceLineNo">500</span>  private UserProvider userProvider;<a name="line.500"></a>
+<span class="sourceLineNo">477</span>  private RegionServerProcedureManagerHost rspmHost;<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>  private RegionServerRpcQuotaManager rsQuotaManager;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  private RegionServerSpaceQuotaManager rsSpaceQuotaManager;<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  /**<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   * Nonce manager. Nonces are used to make operations like increment and append idempotent<a name="line.483"></a>
+<span class="sourceLineNo">484</span>   * in the case where client doesn't receive the response from a successful operation and<a name="line.484"></a>
+<span class="sourceLineNo">485</span>   * retries. We track the successful ops for some time via a nonce sent by client and handle<a name="line.485"></a>
+<span class="sourceLineNo">486</span>   * duplicate operations (currently, by failing them; in future we might use MVCC to return<a name="line.486"></a>
+<span class="sourceLineNo">487</span>   * result). Nonces are also recovered from WAL during, recovery; however, the caveats (from<a name="line.487"></a>
+<span class="sourceLineNo">488</span>   * HBASE-3787) are:<a name="line.488"></a>
+<span class="sourceLineNo">489</span>   * - WAL recovery is optimized, and under high load we won't read nearly nonce-timeout worth<a name="line.489"></a>
+<span class="sourceLineNo">490</span>   *   of past records. If we don't read the records, we don't read and recover the nonces.<a name="line.490"></a>
+<span class="sourceLineNo">491</span>   *   Some WALs within nonce-timeout at recovery may not even be present due to rolling/cleanup.<a name="line.491"></a>
+<span class="sourceLineNo">492</span>   * - There's no WAL recovery during normal region move, so nonces will not be transfered.<a name="line.492"></a>
+<span class="sourceLineNo">493</span>   * We can have separate additional "Nonce WAL". It will just contain bunch of numbers and<a name="line.493"></a>
+<span class="sourceLineNo">494</span>   * won't be flushed on main path - because WAL itself also contains nonces, if we only flush<a name="line.494"></a>
+<span class="sourceLineNo">495</span>   * it before memstore flush, for a given nonce we will either see it in the WAL (if it was<a name="line.495"></a>
+<span class="sourceLineNo">496</span>   * never flushed to disk, it will be part of recovery), or we'll see it as part of the nonce<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * log (or both occasionally, which doesn't matter). Nonce log file can be deleted after the<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * latest nonce in it expired. It can also be recovered during move.<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   */<a name="line.499"></a>
+<span class="sourceLineNo">500</span>  final ServerNonceManager nonceManager;<a name="line.500"></a>
 <span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>  protected final RSRpcServices rpcServices;<a name="line.502"></a>
+<span class="sourceLineNo">502</span>  private UserProvider userProvider;<a name="line.502"></a>
 <span class="sourceLineNo">503</span><a name="line.503"></a>
-<span class="sourceLineNo">504</span>  protected CoordinatedStateManager csm;<a name="line.504"></a>
+<span class="sourceLineNo">504</span>  protected final RSRpcServices rpcServices;<a name="line.504"></a>
 <span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>  /**<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  protected final ConfigurationManager configurationManager;<a name="line.510"></a>
-<span class="sourceLineNo">511</span><a name="line.511"></a>
-<span class="sourceLineNo">512</span>  @VisibleForTesting<a name="line.512"></a>
-<span class="sourceLineNo">513</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.513"></a>
-<span class="sourceLineNo">514</span><a name="line.514"></a>
-<span class="sourceLineNo">515</span>  private volatile ThroughputController flushThroughputController;<a name="line.515"></a>
+<span class="sourceLineNo">506</span>  protected CoordinatedStateManager csm;<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>   * Configuration manager is used to register/deregister and notify the configuration observers<a name="line.509"></a>
+<span class="sourceLineNo">510</span>   * when the regionserver is notified that there was a change in the on disk configs.<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   */<a name="line.511"></a>
+<span class="sourceLineNo">512</span>  protected final ConfigurationManager configurationManager;<a name="line.512"></a>
+<span class="sourceLineNo">513</span><a name="line.513"></a>
+<span class="sourceLineNo">514</span>  @VisibleForTesting<a name="line.514"></a>
+<span class="sourceLineNo">515</span>  CompactedHFilesDischarger compactedFileDischarger;<a name="line.515"></a>
 <span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.517"></a>
+<span class="sourceLineNo">517</span>  private volatile ThroughputController flushThroughputController;<a name="line.517"></a>
 <span class="sourceLineNo">518</span><a name="line.518"></a>
-<span class="sourceLineNo">519</span>  protected FileSystemUtilizationChore fsUtilizationChore;<a name="line.519"></a>
+<span class="sourceLineNo">519</span>  protected SecureBulkLoadManager secureBulkLoadManager;<a name="line.519"></a>
 <span class="sourceLineNo">520</span><a name="line.520"></a>
-<span class="sourceLineNo">521</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<a name="line.521"></a>
+<span class="sourceLineNo">521</span>  protected FileSystemUtilizationChore fsUtilizationChore;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.524"></a>
-<span class="sourceLineNo">525</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.525"></a>
-<span class="sourceLineNo">526</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  private final boolean masterless;<a name="line.529"></a>
-<span class="sourceLineNo">530</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<a name="line.530"></a>
-<span class="sourceLineNo">531</span><a name="line.531"></a>
-<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   * Starts a HRegionServer at the default location<a name="line.533"></a>
-<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
-<span class="sourceLineNo">535</span>  // Don't start any services or managers in here in the Constructor.<a name="line.535"></a>
-<span class="sourceLineNo">536</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.536"></a>
-<span class="sourceLineNo">537</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    super("RegionServer");  // thread name<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    TraceUtil.initTracer(conf);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    try {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      this.startcode = System.currentTimeMillis();<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      this.conf = conf;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      this.fsOk = true;<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      HFile.checkHFileVersion(this.conf);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      checkCodecs(this.conf);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.549"></a>
-<span class="sourceLineNo">550</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>      decorateRegionServerConfiguration(this.conf);<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>      // Disable usage of meta replicas in the regionserver<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // Config'ed params<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.556"></a>
-<span class="sourceLineNo">557</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.558"></a>
-<span class="sourceLineNo">559</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.559"></a>
-<span class="sourceLineNo">560</span><a name="line.560"></a>
-<span class="sourceLineNo">561</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.561"></a>
+<span class="sourceLineNo">523</span>  private final NettyEventLoopGroupConfig eventLoopGroupConfig;<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>   * True if this RegionServer is coming up in a cluster where there is no Master;<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   * means it needs to just come up and make do without a Master to talk to: e.g. in test or<a name="line.527"></a>
+<span class="sourceLineNo">528</span>   * HRegionServer is doing other than its usual duties: e.g. as an hollowed-out host whose only<a name="line.528"></a>
+<span class="sourceLineNo">529</span>   * purpose is as a Replication-stream sink; see HBASE-18846 for more.<a name="line.529"></a>
+<span class="sourceLineNo">530</span>   */<a name="line.530"></a>
+<span class="sourceLineNo">531</span>  private final boolean masterless;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>  static final String MASTERLESS_CONFIG_NAME = "hbase.masterless";<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>   * Starts a HRegionServer at the default location<a name="line.535"></a>
+<span class="sourceLineNo">536</span>   */<a name="line.536"></a>
+<span class="sourceLineNo">537</span>  // Don't start any services or managers in here in the Constructor.<a name="line.537"></a>
+<span class="sourceLineNo">538</span>  // Defer till after we register with the Master as much as possible. See #startServices.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>  public HRegionServer(Configuration conf) throws IOException {<a name="line.539"></a>
+<span class="sourceLineNo">540</span>    super("RegionServer");  // thread name<a name="line.540"></a>
+<span class="sourceLineNo">541</span>    TraceUtil.initTracer(conf);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    try {<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      this.startcode = System.currentTimeMillis();<a name="line.543"></a>
+<span class="sourceLineNo">544</span>      this.conf = conf;<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      this.fsOk = true;<a name="line.545"></a>
+<span class="sourceLineNo">546</span>      this.masterless = conf.getBoolean(MASTERLESS_CONFIG_NAME, false);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>      this.eventLoopGroupConfig = setupNetty(this.conf);<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      MemorySizeUtil.checkForClusterFreeHeapMemoryLimit(this.conf);<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      HFile.checkHFileVersion(this.conf);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      checkCodecs(this.conf);<a name="line.550"></a>
+<span class="sourceLineNo">551</span>      this.userProvider = UserProvider.instantiate(conf);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      FSUtils.setupShortCircuitRead(this.conf);<a name="line.552"></a>
+<span class="sourceLineNo">553</span>      decorateRegionServerConfiguration(this.conf);<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>      // Disable usage of meta replicas in the regionserver<a name="line.555"></a>
+<span class="sourceLineNo">556</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.556"></a>
+<span class="sourceLineNo">557</span>      // Config'ed params<a name="line.557"></a>
+<span class="sourceLineNo">558</span>      this.numRetries = this.conf.getInt(HConstants.HBASE_CLIENT_RETRIES_NUMBER,<a name="line.558"></a>
+<span class="sourceLineNo">559</span>          HConstants.DEFAULT_HBASE_CLIENT_RETRIES_NUMBER);<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      this.threadWakeFrequency = conf.getInt(HConstants.THREAD_WAKE_FREQUENCY, 10 * 1000);<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      this.msgInterval = conf.getInt("hbase.regionserver.msginterval", 3 * 1000);<a name="line.561"></a>
 <span class="sourceLineNo">562</span><a name="line.562"></a>
-<span class="sourceLineNo">563</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.563"></a>
-<span class="sourceLineNo">564</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.564"></a>
-<span class="sourceLineNo">565</span><a name="line.565"></a>
-<span class="sourceLineNo">566</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.566"></a>
+<span class="sourceLineNo">563</span>      this.sleeper = new Sleeper(this.msgInterval, this);<a name="line.563"></a>
+<span class="sourceLineNo">564</span><a name="line.564"></a>
+<span class="sourceLineNo">565</span>      boolean isNoncesEnabled = conf.getBoolean(HConstants.HBASE_RS_NONCES_ENABLED, true);<a name="line.565"></a>
+<span class="sourceLineNo">566</span>      this.nonceManager = isNoncesEnabled ? new ServerNonceManager(this.conf) : null;<a name="line.566"></a>
 <span class="sourceLineNo">567</span><a name="line.567"></a>
-<span class="sourceLineNo">568</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.569"></a>
-<span class="sourceLineNo">570</span><a name="line.570"></a>
-<span class="sourceLineNo">571</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.571"></a>
-<span class="sourceLineNo">572</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.572"></a>
-<span class="sourceLineNo">573</span><a name="line.573"></a>
-<span class="sourceLineNo">574</span>      this.abortRequested = false;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      this.stopped = false;<a name="line.575"></a>
-<span class="sourceLineNo">576</span><a name="line.576"></a>
-<span class="sourceLineNo">577</span>      rpcServices = createRpcServices();<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      String hostName =<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              : this.useThisHostnameInstead;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.582"></a>
-<span class="sourceLineNo">583</span><a name="line.583"></a>
-<span class="sourceLineNo">584</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.585"></a>
-<span class="sourceLineNo">586</span><a name="line.586"></a>
-<span class="sourceLineNo">587</span>      // login the zookeeper client principal (if using security)<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.588"></a>
-<span class="sourceLineNo">589</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      // login the server principal (if using secure Hadoop)<a name="line.590"></a>
-<span class="sourceLineNo">591</span>      login(userProvider, hostName);<a name="line.591"></a>
-<span class="sourceLineNo">592</span>      // init superusers and add the server principal (if using security)<a name="line.592"></a>
-<span class="sourceLineNo">593</span>      // or process owner as default super user.<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      Superusers.initialize(conf);<a name="line.594"></a>
-<span class="sourceLineNo">595</span><a name="line.595"></a>
-<span class="sourceLineNo">596</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      cacheConfig = new CacheConfig(conf);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.598"></a>
-<span class="sourceLineNo">599</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>        @Override<a name="line.600"></a>
-<span class="sourceLineNo">601</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.601"></a>
-<span class="sourceLineNo">602</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.602"></a>
-<span class="sourceLineNo">603</span>        }<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>      initializeFileSystem();<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>      this.configurationManager = new ConfigurationManager();<a name="line.609"></a>
-<span class="sourceLineNo">610</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.610"></a>
-<span class="sourceLineNo">611</span><a name="line.611"></a>
-<span class="sourceLineNo">612</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>        // Open connection to zookeeper and set primary watcher<a name="line.614"></a>
-<span class="sourceLineNo">615</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.615"></a>
-<span class="sourceLineNo">616</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.616"></a>
-<span class="sourceLineNo">617</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.617"></a>
-<span class="sourceLineNo">618</span>        if (!this.masterless) {<a name="line.618"></a>
-<span class="sourceLineNo">619</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>          masterAddressTracker.start();<a name="line.622"></a>
-<span class="sourceLineNo">623</span><a name="line.623"></a>
-<span class="sourceLineNo">624</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.624"></a>
-<span class="sourceLineNo">625</span>          clusterStatusTracker.start();<a name="line.625"></a>
-<span class="sourceLineNo">626</span>        } else {<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          masterAddressTracker = null;<a name="line.627"></a>
-<span class="sourceLineNo">628</span>          clusterStatusTracker = null;<a name="line.628"></a>
-<span class="sourceLineNo">629</span>        }<a name="line.629"></a>
-<span class="sourceLineNo">630</span>      } else {<a name="line.630"></a>
-<span class="sourceLineNo">631</span>        zooKeeper = null;<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        masterAddressTracker = null;<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        clusterStatusTracker = null;<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      }<a name="line.634"></a>
-<span class="sourceLineNo">635</span>      this.rpcServices.start(zooKeeper);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.637"></a>
-<span class="sourceLineNo">638</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.638"></a>
-<span class="sourceLineNo">639</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      // class HRS. TODO.<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      this.choreService = new ChoreService(getName(), true);<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      this.executorService = new ExecutorService(getName());<a name="line.642"></a>
-<span class="sourceLineNo">643</span>      putUpWebUI();<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    } catch (Throwable t) {<a name="line.644"></a>
-<span class="sourceLineNo">645</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.645"></a>
-<span class="sourceLineNo">646</span>      // cause of failed startup is lost.<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      LOG.error("Failed construction RegionServer", t);<a name="line.647"></a>
-<span class="sourceLineNo">648</span>      throw t;<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    }<a name="line.649"></a>
-<span class="sourceLineNo">650</span>  }<a name="line.650"></a>
-<span class="sourceLineNo">651</span><a name="line.651"></a>
-<span class="sourceLineNo">652</span>  // HMaster should override this method to load the specific config for master<a name="line.652"></a>
-<span class="sourceLineNo">653</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.653"></a>
-<span class="sourceLineNo">654</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.654"></a>
-<span class="sourceLineNo">655</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.658"></a>
-<span class="sourceLineNo">659</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        throw new IOException(msg);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        return rpcServices.isa.getHostName();<a name="line.662"></a>
-<span class="sourceLineNo">663</span>      }<a name="line.663"></a>
-<span class="sourceLineNo">664</span>    } else {<a name="line.664"></a>
-<span class="sourceLineNo">665</span>      return hostname;<a name="line.665"></a>
-<span class="sourceLineNo">666</span>    }<a name="line.666"></a>
-<span class="sourceLineNo">667</span>  }<a name="line.667"></a>
-<span class="sourceLineNo">668</span><a name="line.668"></a>
-<span class="sourceLineNo">669</span>  /**<a name="line.669"></a>
-<span class="sourceLineNo">670</span>   * If running on Windows, do windows-specific setup.<a name="line.670"></a>
-<span class="sourceLineNo">671</span>   */<a name="line.671"></a>
-<span class="sourceLineNo">672</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.673"></a>
-<span class="sourceLineNo">674</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.674"></a>
-<span class="sourceLineNo">675</span>        @Override<a name="line.675"></a>
-<span class="sourceLineNo">676</span>        public void handle(Signal signal) {<a name="line.676"></a>
-<span class="sourceLineNo">677</span>          conf.reloadConfiguration();<a name="line.677"></a>
-<span class="sourceLineNo">678</span>          cm.notifyAllObservers(conf);<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>  }<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.684"></a>
-<span class="sourceLineNo">685</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.685"></a>
-<span class="sourceLineNo">686</span>    NettyEventLoopGroupConfig nelgc =<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      new NettyEventLoopGroupConfig(conf, "RS-EventLoopGroup");<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    NettyRpcClientConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.688"></a>
-<span class="sourceLineNo">689</span>    NettyAsyncFSWALConfigHelper.setEventLoopConfig(conf, nelgc.group(), nelgc.clientChannelClass());<a name="line.689"></a>
-<span class="sourceLineNo">690</span>    return nelgc;<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>  private void initializeFileSystem() throws IOException {<a name="line.693"></a>
-<span class="sourceLineNo">694</span>    // Get fs instance used by this RS.  Do we use checksum verification in the hbase? If hbase<a name="line.694"></a>
-<span class="sourceLineNo">695</span>    // checksum verification enabled, then automatically switch off hdfs checksum verification.<a name="line.695"></a>
-<span class="sourceLineNo">696</span>    boolean useHBaseChecksum = conf.getBoolean(HConstants.HBASE_CHECKSUM_VERIFICATION, true);<a name="line.696"></a>
-<span class="sourceLineNo">697</span>    FSUtils.setFsDefault(this.conf, FSUtils.getWALRootDir(this.conf));<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    this.walFs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.698"></a>
-<span class="sourceLineNo">699</span>    this.walRootDir = FSUtils.getWALRootDir(this.conf);<a name="line.699"></a>
-<span class="sourceLineNo">700</span>    // Set 'fs.defaultFS' to match the filesystem on hbase.rootdir else<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    // underlying hadoop hdfs accessors will be going against wrong filesystem<a name="line.701"></a>
-<span class="sourceLineNo">702</span>    // (unless all is set to defaults).<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    FSUtils.setFsDefault(this.conf, FSUtils.getRootDir(this.conf));<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    this.fs = new HFileSystem(this.conf, useHBaseChecksum);<a name="line.704"></a>
-<span class="sourceLineNo">705</span>    this.rootDir = FSUtils.getRootDir(this.conf);<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    this.tableDescriptors = getFsTableDescriptors();<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  }<a name="line.707"></a>
-<span class="sourceLineNo">708</span><a name="line.708"></a>
-<span class="sourceLineNo">709</span>  protected TableDescriptors getFsTableDescriptors() throws IOException {<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    return new FSTableDescriptors(this.conf,<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.fs, this.rootDir, !canUpdateTableDescriptor(), false, getMetaTableObserver());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>  }<a name="line.712"></a>
-<span class="sourceLineNo">713</span><a name="line.713"></a>
-<span class="sourceLineNo">714</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.714"></a>
-<span class="sourceLineNo">715</span>    return null;<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  }<a name="line.716"></a>
-<span class="sourceLineNo">717</span><a name="line.717"></a>
-<span class="sourceLineNo">718</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.718"></a>
-<span class="sourceLineNo">719</span>    user.login("hbase.regionserver.keytab.file",<a name="line.719"></a>
-<span class="sourceLineNo">720</span>      "hbase.regionserver.kerberos.principal", host);<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>  protected void waitForMasterActive() {<a name="line.723"></a>
-<span class="sourceLineNo">724</span>  }<a name="line.724"></a>
-<span class="sourceLineNo">725</span><a name="line.725"></a>
-<span class="sourceLineNo">726</span>  protected String getProcessName() {<a name="line.726"></a>
-<span class="sourceLineNo">727</span>    return REGIONSERVER;<a name="line.727"></a>
-<span class="sourceLineNo">728</span>  }<a name="line.728"></a>
-<span class="sourceLineNo">729</span><a name="line.729"></a>
-<span class="sourceLineNo">730</span>  protected boolean canCreateBaseZNode() {<a name="line.730"></a>
-<span class="sourceLineNo">731</span>    return this.masterless;<a name="line.731"></a>
-<span class="sourceLineNo">732</span>  }<a name="line.732"></a>
-<span class="sourceLineNo">733</span><a name="line.733"></a>
-<span class="sourceLineNo">734</span>  protected boolean canUpdateTableDescriptor() {<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    return false;<a name="line.735"></a>
-<span class="sourceLineNo">736</span>  }<a name="line.736"></a>
-<span class="sourceLineNo">737</span><a name="line.737"></a>
-<span class="sourceLineNo">738</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    return new RSRpcServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>  }<a name="line.740"></a>
-<span class="sourceLineNo">741</span><a name="line.741"></a>
-<span class="sourceLineNo">742</span>  protected void configureInfoServer() {<a name="line.742"></a>
-<span class="sourceLineNo">743</span>    infoServer.addServlet("rs-status", "/rs-status", RSStatusServlet.class);<a name="line.743"></a>
-<span class="sourceLineNo">744</span>    infoServer.setAttribute(REGIONSERVER, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>  }<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    return RSDumpServlet.class;<a name="line.748"></a>
-<span class="sourceLineNo">749</span>  }<a name="line.749"></a>
-<span class="sourceLineNo">750</span><a name="line.750"></a>
-<span class="sourceLineNo">751</span>  @Override<a name="line.751"></a>
-<span class="sourceLineNo">752</span>  public boolean registerService(com.google.protobuf.Service instance) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    /*<a name="line.753"></a>
-<span class="sourceLineNo">754</span>     * No stacking of instances is allowed for a single executorService name<a name="line.754"></a>
-<span class="sourceLineNo">755</span>     */<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    com.google.protobuf.Descriptors.ServiceDescriptor serviceDesc =<a name="line.756"></a>
-<span class="sourceLineNo">757</span>        instance.getDescriptorForType();<a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String serviceName = CoprocessorRpcUtils.getServiceName(serviceDesc);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    if (coprocessorServiceHandlers.containsKey(serviceName)) {<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      LOG.error("Coprocessor executorService " + serviceName<a name="line.760"></a>
-<span class="sourceLineNo">761</span>          + " already registered, rejecting request from " + instance);<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      return false;<a name="line.762"></a>
-<span class="sourceLineNo">763</span>    }<a name="line.763"></a>
-<span class="sourceLineNo">764</span><a name="line.764"></a>
-<span class="sourceLineNo">765</span>    coprocessorServiceHandlers.put(serviceName, instance);<a name="line.765"></a>
-<span class="sourceLineNo">766</span>    if (LOG.isDebugEnabled()) {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      LOG.debug("Registered regionserver coprocessor executorService: executorService=" + serviceName);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>    }<a name="line.768"></a>
-<span class="sourceLineNo">769</span>    return true;<a name="line.769"></a>
-<span class="sourceLineNo">770</span>  }<a name="line.770"></a>
-<span class="sourceLineNo">771</span><a name="line.771"></a>
-<span class="sourceLineNo">772</span>  /**<a name="line.772"></a>
-<span class="sourceLineNo">773</span>   * Create a 'smarter' Connection, one that is capable of by-passing RPC if the request is to<a name="line.773"></a>
-<span class="sourceLineNo">774</span>   * the local server; i.e. a short-circuit Connection. Safe to use going to local or remote<a name="line.774"></a>
-<span class="sourceLineNo">775</span>   * server. Create this instance in a method can be intercepted and mocked in tests.<a name="line.775"></a>
-<span class="sourceLineNo">776</span>   * @throws IOException<a name="line.776"></a>
-<span class="sourceLineNo">777</span>   */<a name="line.777"></a>
-<span class="sourceLineNo">778</span>  @VisibleForTesting<a name="line.778"></a>
-<span class="sourceLineNo">779</span>  protected ClusterConnection createClusterConnection() throws IOException {<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    // Create a cluster connection that when appropriate, can short-circuit and go directly to the<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    // local server if the request is to the local server bypassing RPC. Can be used for both local<a name="line.781"></a>
-<span class="sourceLineNo">782</span>    // and remote invocations.<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    return ConnectionUtils.createShortCircuitConnection(conf, null, userProvider.getCurrent(),<a name="line.783"></a>
-<span class="sourceLineNo">784</span>      serverName, rpcServices, rpcServices);<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>   * Run test on configured codecs to make sure supporting libs are in place.<a name="line.788"></a>
-<span class="sourceLineNo">789</span>   * @param c<a name="line.789"></a>
-<span class="sourceLineNo">790</span>   * @throws IOException<a name="line.790"></a>
-<span class="sourceLineNo">791</span>   */<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  private static void checkCodecs(final Configuration c) throws IOException {<a name="line.792"></a>
-<span class="sourceLineNo">793</span>    // check to see if the codec list is available:<a name="line.793"></a>
-<span class="sourceLineNo">794</span>    String [] codecs = c.getStrings("hbase.regionserver.codecs", (String[])null);<a name="line.794"></a>
-<span class="sourceLineNo">795</span>    if (codecs == null) return;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    for (String codec : codecs) {<a name="line.796"></a>
-<span class="sourceLineNo">797</span>      if (!CompressionTest.testCompression(codec)) {<a name="line.797"></a>
-<span class="sourceLineNo">798</span>        throw new IOException("Compression codec " + codec +<a name="line.798"></a>
-<span class="sourceLineNo">799</span>          " not supported, aborting RS construction");<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><a name="line.803"></a>
-<span class="sourceLineNo">804</span>  public String getClusterId() {<a name="line.804"></a>
-<span class="sourceLineNo">805</span>    return this.clusterId;<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>   * Setup our cluster connection if not already initialized.<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * @throws IOException<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   */<a name="line.811"></a>
-<span class="sourceLineNo">812</span>  protected synchronized void setupClusterConnection() throws IOException {<a name="line.812"></a>
-<span class="sourceLineNo">813</span>    if (clusterConnection == null) {<a name="line.813"></a>
-<span class="sourceLineNo">814</span>      clusterConnection = createClusterConnection();<a name="line.814"></a>
-<span class="sourceLineNo">815</span>      metaTableLocator = new MetaTableLocator();<a name="line.815"></a>
-<span class="sourceLineNo">816</span>    }<a name="line.816"></a>
-<span class="sourceLineNo">817</span>  }<a name="line.817"></a>
-<span class="sourceLineNo">818</span><a name="line.818"></a>
-<span class="sourceLineNo">819</span>  /**<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * All initialization needed before we go register with Master.&lt;br&gt;<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * Do bare minimum. Do bulk of initializations AFTER we've connected to the Master.&lt;br&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * In here we just put up the RpcServer, setup Connection, and ZooKeeper.<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   */<a name="line.823"></a>
-<span class="sourceLineNo">824</span>  private void preRegistrationInitialization() {<a name="line.824"></a>
-<span class="sourceLineNo">825</span>    try {<a name="line.825"></a>
-<span class="sourceLineNo">826</span>      initializeZooKeeper();<a name="line.826"></a>
-<span class="sourceLineNo">827</span>      setupClusterConnection();<a name="line.827"></a>
-<span class="sourceLineNo">828</span>      // Setup RPC client for master communication<a name="line.828"></a>
-<span class="sourceLineNo">829</span>      this.rpcClient = RpcClientFactory.createClient(conf, clusterId, new InetSocketAddress(<a name="line.829"></a>
-<span class="sourceLineNo">830</span>          this.rpcServices.isa.getAddress(), 0), clusterConnection.getConnectionMetrics());<a name="line.830"></a>
-<span class="sourceLineNo">831</span>    } catch (Throwable t) {<a name="line.831"></a>
-<span class="sourceLineNo">832</span>      // Call stop if error or process will stick around for ever since server<a name="line.832"></a>
-<span class="sourceLineNo">833</span>      // puts up non-daemon threads.<a name="line.833"></a>
-<span class="sourceLineNo">834</span>      this.rpcServices.stop();<a name="line.834"></a>
-<span class="sourceLineNo">835</span>      abort("Initialization of RS failed.  Hence aborting RS.", t);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    }<a name="line.836"></a>
-<span class="sourceLineNo">837</span>  }<a name="line.837"></a>
-<span class="sourceLineNo">838</span><a name="line.838"></a>
-<span class="sourceLineNo">839</span>  /**<a name="line.839"></a>
-<span class="sourceLineNo">840</span>   * Bring up connection to zk ensemble and then wait until a master for this cluster and then after<a name="line.840"></a>
-<span class="sourceLineNo">841</span>   * that, wait until cluster 'up' flag has been set. This is the order in which master does things.<a name="line.841"></a>
-<span class="sourceLineNo">842</span>   * &lt;p&gt;<a name="line.842"></a>
-<span class="sourceLineNo">843</span>   * Finally open long-living server short-circuit connection.<a name="line.843"></a>
-<span class="sourceLineNo">844</span>   */<a name="line.844"></a>
-<span class="sourceLineNo">845</span>  @edu.umd.cs.findbugs.annotations.SuppressWarnings(value="RV_RETURN_VALUE_IGNORED_BAD_PRACTICE",<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    justification="cluster Id znode read would give us correct response")<a name="line.846"></a>
-<span class="sourceLineNo">847</span>  private void initializeZooKeeper() throws IOException, InterruptedException {<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    // Nothing to do in here if no Master in the mix.<a name="line.848"></a>
-<span class="sourceLineNo">849</span>    if (this.masterless) {<a name="line.849"></a>
-<span class="sourceLineNo">850</span>      return;<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    }<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // Create the master address tracker, register with zk, and start it.  Then<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    // block until a master is available.  No point in starting up if no master<a name="line.854"></a>
-<span class="sourceLineNo">855</span>    // running.<a name="line.855"></a>
-<span class="sourceLineNo">856</span>    blockAndCheckIfStopped(this.masterAddressTracker);<a name="line.856"></a>
-<span class="sourceLineNo">857</span><a name="line.857"></a>
-<span class="sourceLineNo">858</span>    // Wait on cluster being up.  Master will set this flag up in zookeeper<a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // when ready.<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    blockAndCheckIfStopped(this.clusterStatusTracker);<a name="line.860"></a>
+<span class="sourceLineNo">568</span>      this.numRegionsToReport = conf.getInt("hbase.regionserver.numregionstoreport", 10);<a name="line.568"></a>
+<span class="sourceLineNo">569</span><a name="line.569"></a>
+<span class="sourceLineNo">570</span>      this.operationTimeout = conf.getInt(HConstants.HBASE_CLIENT_OPERATION_TIMEOUT,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>          HConstants.DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT);<a name="line.571"></a>
+<span class="sourceLineNo">572</span><a name="line.572"></a>
+<span class="sourceLineNo">573</span>      this.shortOperationTimeout = conf.getInt(HConstants.HBASE_RPC_SHORTOPERATION_TIMEOUT_KEY,<a name="line.573"></a>
+<span class="sourceLineNo">574</span>          HConstants.DEFAULT_HBASE_RPC_SHORTOPERATION_TIMEOUT);<a name="line.574"></a>
+<span class="sourceLineNo">575</span><a name="line.575"></a>
+<span class="sourceLineNo">576</span>      this.abortRequested = false;<a name="line.576"></a>
+<span class="sourceLineNo">577</span>      this.stopped = false;<a name="line.577"></a>
+<span class="sourceLineNo">578</span><a name="line.578"></a>
+<span class="sourceLineNo">579</span>      rpcServices = createRpcServices();<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      useThisHostnameInstead = getUseThisHostnameInstead(conf);<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      String hostName =<a name="line.581"></a>
+<span class="sourceLineNo">582</span>          StringUtils.isBlank(useThisHostnameInstead) ? this.rpcServices.isa.getHostName()<a name="line.582"></a>
+<span class="sourceLineNo">583</span>              : this.useThisHostnameInstead;<a name="line.583"></a>
+<span class="sourceLineNo">584</span>      serverName = ServerName.valueOf(hostName, this.rpcServices.isa.getPort(), this.startcode);<a name="line.584"></a>
+<span class="sourceLineNo">585</span><a name="line.585"></a>
+<span class="sourceLineNo">586</span>      rpcControllerFactory = RpcControllerFactory.instantiate(this.conf);<a name="line.586"></a>
+<span class="sourceLineNo">587</span>      rpcRetryingCallerFactory = RpcRetryingCallerFactory.instantiate(this.conf);<a name="line.587"></a>
+<span class="sourceLineNo">588</span><a name="line.588"></a>
+<span class="sourceLineNo">589</span>      // login the zookeeper client principal (if using security)<a name="line.589"></a>
+<span class="sourceLineNo">590</span>      ZKUtil.loginClient(this.conf, HConstants.ZK_CLIENT_KEYTAB_FILE,<a name="line.590"></a>
+<span class="sourceLineNo">591</span>          HConstants.ZK_CLIENT_KERBEROS_PRINCIPAL, hostName);<a name="line.591"></a>
+<span class="sourceLineNo">592</span>      // login the server principal (if using secure Hadoop)<a name="line.592"></a>
+<span class="sourceLineNo">593</span>      login(userProvider, hostName);<a name="line.593"></a>
+<span class="sourceLineNo">594</span>      // init superusers and add the server principal (if using security)<a name="line.594"></a>
+<span class="sourceLineNo">595</span>      // or process owner as default super user.<a name="line.595"></a>
+<span class="sourceLineNo">596</span>      Superusers.initialize(conf);<a name="line.596"></a>
+<span class="sourceLineNo">597</span><a name="line.597"></a>
+<span class="sourceLineNo">598</span>      regionServerAccounting = new RegionServerAccounting(conf);<a name="line.598"></a>
+<span class="sourceLineNo">599</span>      cacheConfig = new CacheConfig(conf);<a name="line.599"></a>
+<span class="sourceLineNo">600</span>      mobCacheConfig = new MobCacheConfig(conf);<a name="line.600"></a>
+<span class="sourceLineNo">601</span>      uncaughtExceptionHandler = new UncaughtExceptionHandler() {<a name="line.601"></a>
+<span class="sourceLineNo">602</span>        @Override<a name="line.602"></a>
+<span class="sourceLineNo">603</span>        public void uncaughtException(Thread t, Throwable e) {<a name="line.603"></a>
+<span class="sourceLineNo">604</span>          abort("Uncaught exception in executorService thread " + t.getName(), e);<a name="line.604"></a>
+<span class="sourceLineNo">605</span>        }<a name="line.605"></a>
+<span class="sourceLineNo">606</span>      };<a name="line.606"></a>
+<span class="sourceLineNo">607</span><a name="line.607"></a>
+<span class="sourceLineNo">608</span>      initializeFileSystem();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>      spanReceiverHost = SpanReceiverHost.getInstance(getConfiguration());<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>      this.configurationManager = new ConfigurationManager();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>      setupWindows(getConfiguration(), getConfigurationManager());<a name="line.612"></a>
+<span class="sourceLineNo">613</span><a name="line.613"></a>
+<span class="sourceLineNo">614</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.614"></a>
+<span class="sourceLineNo">615</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.615"></a>
+<span class="sourceLineNo">616</span>        // Open connection to zookeeper and set primary watcher<a name="line.616"></a>
+<span class="sourceLineNo">617</span>        zooKeeper = new ZKWatcher(conf, getProcessName() + ":" +<a name="line.617"></a>
+<span class="sourceLineNo">618</span>          rpcServices.isa.getPort(), this, canCreateBaseZNode());<a name="line.618"></a>
+<span class="sourceLineNo">619</span>        // If no master in cluster, skip trying to track one or look for a cluster status.<a name="line.619"></a>
+<span class="sourceLineNo">620</span>        if (!this.masterless) {<a name="line.620"></a>
+<span class="sourceLineNo">621</span>          this.csm = new ZkCoordinatedStateManager(this);<a name="line.621"></a>
+<span class="sourceLineNo">622</span><a name="line.622"></a>
+<span class="sourceLineNo">623</span>          masterAddressTracker = new MasterAddressTracker(getZooKeeper(), this);<a name="line.623"></a>
+<span class="sourceLineNo">624</span>          masterAddressTracker.start();<a name="line.624"></a>
+<span class="sourceLineNo">625</span><a name="line.625"></a>
+<span class="sourceLineNo">626</span>          clusterStatusTracker = new ClusterStatusTracker(zooKeeper, this);<a name="line.626"></a>
+<span class="sourceLineNo">627</span>          clusterStatusTracker.start();<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        } else {<a name="line.628"></a>
+<span class="sourceLineNo">629</span>          masterAddressTracker = null;<a name="line.629"></a>
+<span class="sourceLineNo">630</span>          clusterStatusTracker = null;<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        }<a name="line.631"></a>
+<span class="sourceLineNo">632</span>      } else {<a name="line.632"></a>
+<span class="sourceLineNo">633</span>        zooKeeper = null;<a name="line.633"></a>
+<span class="sourceLineNo">634</span>        masterAddressTracker = null;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>        clusterStatusTracker = null;<a name="line.635"></a>
+<span class="sourceLineNo">636</span>      }<a name="line.636"></a>
+<span class="sourceLineNo">637</span>      this.rpcServices.start(zooKeeper);<a name="line.637"></a>
+<span class="sourceLineNo">638</span>      // This violates 'no starting stuff in Constructor' but Master depends on the below chore<a name="line.638"></a>
+<span class="sourceLineNo">639</span>      // and executor being created and takes a different startup route. Lots of overlap between HRS<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      // and M (An M IS A HRS now). Need to refactor so less duplication between M and its super<a name="line.640"></a>
+<span class="sourceLineNo">641</span>      // Master expects Constructor to put up web servers. Ugh.<a name="line.641"></a>
+<span class="sourceLineNo">642</span>      // class HRS. TODO.<a name="line.642"></a>
+<span class="sourceLineNo">643</span>      this.choreService = new ChoreService(getName(), true);<a name="line.643"></a>
+<span class="sourceLineNo">644</span>      this.executorService = new ExecutorService(getName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>      putUpWebUI();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>    } catch (Throwable t) {<a name="line.646"></a>
+<span class="sourceLineNo">647</span>      // Make sure we log the exception. HRegionServer is often started via reflection and the<a name="line.647"></a>
+<span class="sourceLineNo">648</span>      // cause of failed startup is lost.<a name="line.648"></a>
+<span class="sourceLineNo">649</span>      LOG.error("Failed construction RegionServer", t);<a name="line.649"></a>
+<span class="sourceLineNo">650</span>      throw t;<a name="line.650"></a>
+<span class="sourceLineNo">651</span>    }<a name="line.651"></a>
+<span class="sourceLineNo">652</span>  }<a name="line.652"></a>
+<span class="sourceLineNo">653</span><a name="line.653"></a>
+<span class="sourceLineNo">654</span>  // HMaster should override this method to load the specific config for master<a name="line.654"></a>
+<span class="sourceLineNo">655</span>  protected String getUseThisHostnameInstead(Configuration conf) throws IOException {<a name="line.655"></a>
+<span class="sourceLineNo">656</span>    String hostname = conf.get(RS_HOSTNAME_KEY);<a name="line.656"></a>
+<span class="sourceLineNo">657</span>    if (conf.getBoolean(RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY, false)) {<a name="line.657"></a>
+<span class="sourceLineNo">658</span>      if (!StringUtils.isBlank(hostname)) {<a name="line.658"></a>
+<span class="sourceLineNo">659</span>        String msg = RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY + " and " + RS_HOSTNAME_KEY +<a name="line.659"></a>
+<span class="sourceLineNo">660</span>          " are mutually exclusive. Do not set " + RS_HOSTNAME_DISABLE_MASTER_REVERSEDNS_KEY +<a name="line.660"></a>
+<span class="sourceLineNo">661</span>          " to true while " + RS_HOSTNAME_KEY + " is used";<a name="line.661"></a>
+<span class="sourceLineNo">662</span>        throw new IOException(msg);<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      } else {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        return rpcServices.isa.getHostName();<a name="line.664"></a>
+<span class="sourceLineNo">665</span>      }<a name="line.665"></a>
+<span class="sourceLineNo">666</span>    } else {<a name="line.666"></a>
+<span class="sourceLineNo">667</span>      return hostname;<a name="line.667"></a>
+<span class="sourceLineNo">668</span>    }<a name="line.668"></a>
+<span class="sourceLineNo">669</span>  }<a name="line.669"></a>
+<span class="sourceLineNo">670</span><a name="line.670"></a>
+<span class="sourceLineNo">671</span>  /**<a name="line.671"></a>
+<span class="sourceLineNo">672</span>   * If running on Windows, do windows-specific setup.<a name="line.672"></a>
+<span class="sourceLineNo">673</span>   */<a name="line.673"></a>
+<span class="sourceLineNo">674</span>  private static void setupWindows(final Configuration conf, ConfigurationManager cm) {<a name="line.674"></a>
+<span class="sourceLineNo">675</span>    if (!SystemUtils.IS_OS_WINDOWS) {<a name="line.675"></a>
+<span class="sourceLineNo">676</span>      Signal.handle(new Signal("HUP"), new SignalHandler() {<a name="line.676"></a>
+<span class="sourceLineNo">677</span>        @Override<a name="line.677"></a>
+<span class="sourceLineNo">678</span>        public void handle(Signal signal) {<a name="line.678"></a>
+<span class="sourceLineNo">679</span>          conf.reloadConfiguration();<a name="line.679"></a>
+<span class="sourceLineNo">680</span>          cm.notifyAllObservers(conf);<a name="line.680"></a>
+<span class="sourceLineNo">681</span>        }<a name="line.681"></a>
+<span class="sourceLineNo">682</span>      });<a name="line.682"></a>
+<span class="sourceLineNo">683</span>    }<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>  private static NettyEventLoopGroupConfig setupNetty(Configuration conf) {<a name="line.686"></a>
+<span class="sourceLineNo">687</span>    // Initialize netty event loop group at start as we may use it for rpc server, rpc client &amp; WAL.<a name="line.687"></a>
+<span class="sourceLineNo">688</span>    NettyEventLoopG

<TRUNCATED>

[24/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
index 6fa64ff..8ac7885 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/HConstants.html
@@ -191,1169 +191,1182 @@
 <span class="sourceLineNo">183</span>  /** Name of ZooKeeper quorum configuration parameter. */<a name="line.183"></a>
 <span class="sourceLineNo">184</span>  public static final String ZOOKEEPER_QUORUM = "hbase.zookeeper.quorum";<a name="line.184"></a>
 <span class="sourceLineNo">185</span><a name="line.185"></a>
-<span class="sourceLineNo">186</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.186"></a>
-<span class="sourceLineNo">187</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      "hbase.zookeeper.property.";<a name="line.188"></a>
-<span class="sourceLineNo">189</span><a name="line.189"></a>
-<span class="sourceLineNo">190</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.190"></a>
-<span class="sourceLineNo">191</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.191"></a>
+<span class="sourceLineNo">186</span>  /** Name of ZooKeeper quorum configuration parameter for client to locate meta. */<a name="line.186"></a>
+<span class="sourceLineNo">187</span>  public static final String CLIENT_ZOOKEEPER_QUORUM = "hbase.client.zookeeper.quorum";<a name="line.187"></a>
+<span class="sourceLineNo">188</span><a name="line.188"></a>
+<span class="sourceLineNo">189</span>  /** Client port of ZooKeeper for client to locate meta */<a name="line.189"></a>
+<span class="sourceLineNo">190</span>  public static final String CLIENT_ZOOKEEPER_CLIENT_PORT =<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      "hbase.client.zookeeper.property.clientPort";<a name="line.191"></a>
 <span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  /**<a name="line.193"></a>
-<span class="sourceLineNo">194</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.194"></a>
-<span class="sourceLineNo">195</span>   * fact that this is not an HBase configuration key.<a name="line.195"></a>
-<span class="sourceLineNo">196</span>   */<a name="line.196"></a>
-<span class="sourceLineNo">197</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.197"></a>
+<span class="sourceLineNo">193</span>  /** Indicate whether the client ZK are observer nodes of the server ZK */<a name="line.193"></a>
+<span class="sourceLineNo">194</span>  public static final String CLIENT_ZOOKEEPER_OBSERVER_MODE =<a name="line.194"></a>
+<span class="sourceLineNo">195</span>      "hbase.client.zookeeper.observer.mode";<a name="line.195"></a>
+<span class="sourceLineNo">196</span>  /** Assuming client zk not in observer mode and master need to synchronize information */<a name="line.196"></a>
+<span class="sourceLineNo">197</span>  public static final boolean DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE = false;<a name="line.197"></a>
 <span class="sourceLineNo">198</span><a name="line.198"></a>
-<span class="sourceLineNo">199</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.200"></a>
-<span class="sourceLineNo">201</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.201"></a>
+<span class="sourceLineNo">199</span>  /** Common prefix of ZooKeeper configuration properties */<a name="line.199"></a>
+<span class="sourceLineNo">200</span>  public static final String ZK_CFG_PROPERTY_PREFIX =<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      "hbase.zookeeper.property.";<a name="line.201"></a>
 <span class="sourceLineNo">202</span><a name="line.202"></a>
-<span class="sourceLineNo">203</span>  /** Default client port that the zookeeper listens on */<a name="line.203"></a>
-<span class="sourceLineNo">204</span>  public static final int DEFAULT_ZOOKEPER_CLIENT_PORT = 2181;<a name="line.204"></a>
+<span class="sourceLineNo">203</span>  public static final int ZK_CFG_PROPERTY_PREFIX_LEN =<a name="line.203"></a>
+<span class="sourceLineNo">204</span>      ZK_CFG_PROPERTY_PREFIX.length();<a name="line.204"></a>
 <span class="sourceLineNo">205</span><a name="line.205"></a>
-<span class="sourceLineNo">206</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.206"></a>
-<span class="sourceLineNo">207</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.207"></a>
-<span class="sourceLineNo">208</span><a name="line.208"></a>
-<span class="sourceLineNo">209</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<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>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * connections<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   */<a name="line.214"></a>
-<span class="sourceLineNo">215</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.216"></a>
-<span class="sourceLineNo">217</span><a name="line.217"></a>
-<span class="sourceLineNo">218</span>  /** Parameter name for the ZK data directory */<a name="line.218"></a>
-<span class="sourceLineNo">219</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.220"></a>
+<span class="sourceLineNo">206</span>  /**<a name="line.206"></a>
+<span class="sourceLineNo">207</span>   * The ZK client port key in the ZK properties map. The name reflects the<a name="line.207"></a>
+<span class="sourceLineNo">208</span>   * fact that this is not an HBase configuration key.<a name="line.208"></a>
+<span class="sourceLineNo">209</span>   */<a name="line.209"></a>
+<span class="sourceLineNo">210</span>  public static final String CLIENT_PORT_STR = "clientPort";<a name="line.210"></a>
+<span class="sourceLineNo">211</span><a name="line.211"></a>
+<span class="sourceLineNo">212</span>  /** Parameter name for the client port that the zookeeper listens on */<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  public static final String ZOOKEEPER_CLIENT_PORT =<a name="line.213"></a>
+<span class="sourceLineNo">214</span>      ZK_CFG_PROPERTY_PREFIX + CLIENT_PORT_STR;<a name="line.214"></a>
+<span class="sourceLineNo">215</span><a name="line.215"></a>
+<span class="sourceLineNo">216</span>  /** Default client port that the zookeeper listens on */<a name="line.216"></a>
+<span class="sourceLineNo">217</span>  public static final int DEFAULT_ZOOKEEPER_CLIENT_PORT = 2181;<a name="line.217"></a>
+<span class="sourceLineNo">218</span><a name="line.218"></a>
+<span class="sourceLineNo">219</span>  /** Parameter name for the root dir in ZK for this cluster */<a name="line.219"></a>
+<span class="sourceLineNo">220</span>  public static final String ZOOKEEPER_ZNODE_PARENT = "zookeeper.znode.parent";<a name="line.220"></a>
 <span class="sourceLineNo">221</span><a name="line.221"></a>
-<span class="sourceLineNo">222</span>  /** Parameter name for the ZK tick time */<a name="line.222"></a>
-<span class="sourceLineNo">223</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.224"></a>
-<span class="sourceLineNo">225</span><a name="line.225"></a>
-<span class="sourceLineNo">226</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.226"></a>
-<span class="sourceLineNo">227</span>  public static final int DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS = 300;<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.229"></a>
-<span class="sourceLineNo">230</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.230"></a>
-<span class="sourceLineNo">231</span><a name="line.231"></a>
-<span class="sourceLineNo">232</span>  /** Default value for ZooKeeper session timeout */<a name="line.232"></a>
-<span class="sourceLineNo">233</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.233"></a>
+<span class="sourceLineNo">222</span>  public static final String DEFAULT_ZOOKEEPER_ZNODE_PARENT = "/hbase";<a name="line.222"></a>
+<span class="sourceLineNo">223</span><a name="line.223"></a>
+<span class="sourceLineNo">224</span>  /**<a name="line.224"></a>
+<span class="sourceLineNo">225</span>   * Parameter name for the limit on concurrent client-side zookeeper<a name="line.225"></a>
+<span class="sourceLineNo">226</span>   * connections<a name="line.226"></a>
+<span class="sourceLineNo">227</span>   */<a name="line.227"></a>
+<span class="sourceLineNo">228</span>  public static final String ZOOKEEPER_MAX_CLIENT_CNXNS =<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      ZK_CFG_PROPERTY_PREFIX + "maxClientCnxns";<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>  /** Parameter name for the ZK data directory */<a name="line.231"></a>
+<span class="sourceLineNo">232</span>  public static final String ZOOKEEPER_DATA_DIR =<a name="line.232"></a>
+<span class="sourceLineNo">233</span>      ZK_CFG_PROPERTY_PREFIX + "dataDir";<a name="line.233"></a>
 <span class="sourceLineNo">234</span><a name="line.234"></a>
-<span class="sourceLineNo">235</span>  /** Parameter name for port region server listens on. */<a name="line.235"></a>
-<span class="sourceLineNo">236</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.236"></a>
-<span class="sourceLineNo">237</span><a name="line.237"></a>
-<span class="sourceLineNo">238</span>  /** Default port region server listens on. */<a name="line.238"></a>
-<span class="sourceLineNo">239</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.239"></a>
-<span class="sourceLineNo">240</span><a name="line.240"></a>
-<span class="sourceLineNo">241</span>  /** default port for region server web api */<a name="line.241"></a>
-<span class="sourceLineNo">242</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.242"></a>
-<span class="sourceLineNo">243</span><a name="line.243"></a>
-<span class="sourceLineNo">244</span>  /** A configuration key for regionserver info port */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    "hbase.regionserver.info.port";<a name="line.246"></a>
+<span class="sourceLineNo">235</span>  /** Parameter name for the ZK tick time */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  public static final String ZOOKEEPER_TICK_TIME =<a name="line.236"></a>
+<span class="sourceLineNo">237</span>      ZK_CFG_PROPERTY_PREFIX + "tickTime";<a name="line.237"></a>
+<span class="sourceLineNo">238</span><a name="line.238"></a>
+<span class="sourceLineNo">239</span>  /** Default limit on concurrent client-side zookeeper connections */<a name="line.239"></a>
+<span class="sourceLineNo">240</span>  public static final int DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS = 300;<a name="line.240"></a>
+<span class="sourceLineNo">241</span><a name="line.241"></a>
+<span class="sourceLineNo">242</span>  /** Configuration key for ZooKeeper session timeout */<a name="line.242"></a>
+<span class="sourceLineNo">243</span>  public static final String ZK_SESSION_TIMEOUT = "zookeeper.session.timeout";<a name="line.243"></a>
+<span class="sourceLineNo">244</span><a name="line.244"></a>
+<span class="sourceLineNo">245</span>  /** Default value for ZooKeeper session timeout */<a name="line.245"></a>
+<span class="sourceLineNo">246</span>  public static final int DEFAULT_ZK_SESSION_TIMEOUT = 90 * 1000;<a name="line.246"></a>
 <span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.250"></a>
-<span class="sourceLineNo">251</span><a name="line.251"></a>
-<span class="sourceLineNo">252</span>  /** Parameter name for what region server implementation to use. */<a name="line.252"></a>
-<span class="sourceLineNo">253</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>  /** Parameter name for what master implementation to use. */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>  /** Parameter name for how often threads should wake up */<a name="line.258"></a>
-<span class="sourceLineNo">259</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<a name="line.259"></a>
+<span class="sourceLineNo">248</span>  /** Parameter name for port region server listens on. */<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  public static final String REGIONSERVER_PORT = "hbase.regionserver.port";<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  /** Default port region server listens on. */<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public static final int DEFAULT_REGIONSERVER_PORT = 16020;<a name="line.252"></a>
+<span class="sourceLineNo">253</span><a name="line.253"></a>
+<span class="sourceLineNo">254</span>  /** default port for region server web api */<a name="line.254"></a>
+<span class="sourceLineNo">255</span>  public static final int DEFAULT_REGIONSERVER_INFOPORT = 16030;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>  /** A configuration key for regionserver info port */<a name="line.257"></a>
+<span class="sourceLineNo">258</span>  public static final String REGIONSERVER_INFO_PORT =<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    "hbase.regionserver.info.port";<a name="line.259"></a>
 <span class="sourceLineNo">260</span><a name="line.260"></a>
-<span class="sourceLineNo">261</span>  /** Default value for thread wake frequency */<a name="line.261"></a>
-<span class="sourceLineNo">262</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.262"></a>
-<span class="sourceLineNo">263</span><a name="line.263"></a>
-<span class="sourceLineNo">264</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.264"></a>
-<span class="sourceLineNo">265</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.268"></a>
-<span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.271"></a>
-<span class="sourceLineNo">272</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<a name="line.272"></a>
+<span class="sourceLineNo">261</span>  /** A flag that enables automatic selection of regionserver info port */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>  public static final String REGIONSERVER_INFO_PORT_AUTO =<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      REGIONSERVER_INFO_PORT + ".auto";<a name="line.263"></a>
+<span class="sourceLineNo">264</span><a name="line.264"></a>
+<span class="sourceLineNo">265</span>  /** Parameter name for what region server implementation to use. */<a name="line.265"></a>
+<span class="sourceLineNo">266</span>  public static final String REGION_SERVER_IMPL= "hbase.regionserver.impl";<a name="line.266"></a>
+<span class="sourceLineNo">267</span><a name="line.267"></a>
+<span class="sourceLineNo">268</span>  /** Parameter name for what master implementation to use. */<a name="line.268"></a>
+<span class="sourceLineNo">269</span>  public static final String MASTER_IMPL= "hbase.master.impl";<a name="line.269"></a>
+<span class="sourceLineNo">270</span><a name="line.270"></a>
+<span class="sourceLineNo">271</span>  /** Parameter name for how often threads should wake up */<a name="line.271"></a>
+<span class="sourceLineNo">272</span>  public static final String THREAD_WAKE_FREQUENCY = "hbase.server.thread.wakefrequency";<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>   * Parameter name and default value for major compaction jitter.<a name="line.275"></a>
-<span class="sourceLineNo">276</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.276"></a>
-<span class="sourceLineNo">277</span>   * to cause compaction to occur a given amount of time either side of<a name="line.277"></a>
-<span class="sourceLineNo">278</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.278"></a>
-<span class="sourceLineNo">279</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.279"></a>
-<span class="sourceLineNo">280</span>   */<a name="line.280"></a>
-<span class="sourceLineNo">281</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.281"></a>
-<span class="sourceLineNo">282</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.284"></a>
-<span class="sourceLineNo">285</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.285"></a>
-<span class="sourceLineNo">286</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.286"></a>
-<span class="sourceLineNo">287</span><a name="line.287"></a>
-<span class="sourceLineNo">288</span>  /** Parameter name for HBase instance root directory */<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.289"></a>
-<span class="sourceLineNo">290</span><a name="line.290"></a>
-<span class="sourceLineNo">291</span>  /** Parameter name for HBase client IPC pool type */<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  /** Parameter name for HBase client IPC pool size */<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.295"></a>
+<span class="sourceLineNo">274</span>  /** Default value for thread wake frequency */<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  public static final int DEFAULT_THREAD_WAKE_FREQUENCY = 10 * 1000;<a name="line.275"></a>
+<span class="sourceLineNo">276</span><a name="line.276"></a>
+<span class="sourceLineNo">277</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.277"></a>
+<span class="sourceLineNo">278</span>  public static final String VERSION_FILE_WRITE_ATTEMPTS = "hbase.server.versionfile.writeattempts";<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>  /** Parameter name for how often we should try to write a version file, before failing */<a name="line.280"></a>
+<span class="sourceLineNo">281</span>  public static final int DEFAULT_VERSION_FILE_WRITE_ATTEMPTS = 3;<a name="line.281"></a>
+<span class="sourceLineNo">282</span><a name="line.282"></a>
+<span class="sourceLineNo">283</span>  /** Parameter name and default value for how often a region should perform a major compaction */<a name="line.283"></a>
+<span class="sourceLineNo">284</span>  public static final String MAJOR_COMPACTION_PERIOD = "hbase.hregion.majorcompaction";<a name="line.284"></a>
+<span class="sourceLineNo">285</span>  public static final long   DEFAULT_MAJOR_COMPACTION_PERIOD = 1000 * 60 * 60 * 24 * 7; // 7 days<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>   * Parameter name and default value for major compaction jitter.<a name="line.288"></a>
+<span class="sourceLineNo">289</span>   * Used as a multiplier applied to {@link HConstants#MAJOR_COMPACTION_PERIOD}<a name="line.289"></a>
+<span class="sourceLineNo">290</span>   * to cause compaction to occur a given amount of time either side of<a name="line.290"></a>
+<span class="sourceLineNo">291</span>   * {@link HConstants#MAJOR_COMPACTION_PERIOD}.<a name="line.291"></a>
+<span class="sourceLineNo">292</span>   * Default to 0.5 so jitter has us fall evenly either side of when the compaction should run.<a name="line.292"></a>
+<span class="sourceLineNo">293</span>   */<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  public static final String MAJOR_COMPACTION_JITTER = "hbase.hregion.majorcompaction.jitter";<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final float  DEFAULT_MAJOR_COMPACTION_JITTER = 0.50F;<a name="line.295"></a>
 <span class="sourceLineNo">296</span><a name="line.296"></a>
-<span class="sourceLineNo">297</span>  /** Parameter name for HBase client operation timeout. */<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  /** Parameter name for HBase client operation timeout. */<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.301"></a>
-<span class="sourceLineNo">302</span>    "hbase.client.meta.operation.timeout";<a name="line.302"></a>
+<span class="sourceLineNo">297</span>  /** Parameter name for the maximum batch of KVs to be used in flushes and compactions */<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String COMPACTION_KV_MAX = "hbase.hstore.compaction.kv.max";<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  public static final int COMPACTION_KV_MAX_DEFAULT = 10;<a name="line.299"></a>
+<span class="sourceLineNo">300</span><a name="line.300"></a>
+<span class="sourceLineNo">301</span>  /** Parameter name for HBase instance root directory */<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  public static final String HBASE_DIR = "hbase.rootdir";<a name="line.302"></a>
 <span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.305"></a>
+<span class="sourceLineNo">304</span>  /** Parameter name for HBase client IPC pool type */<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  public static final String HBASE_CLIENT_IPC_POOL_TYPE = "hbase.client.ipc.pool.type";<a name="line.305"></a>
 <span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.309"></a>
-<span class="sourceLineNo">310</span><a name="line.310"></a>
-<span class="sourceLineNo">311</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.311"></a>
-<span class="sourceLineNo">312</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.312"></a>
-<span class="sourceLineNo">313</span><a name="line.313"></a>
-<span class="sourceLineNo">314</span>  /** Used to construct the name of the log directory for a region server */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.315"></a>
+<span class="sourceLineNo">307</span>  /** Parameter name for HBase client IPC pool size */<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public static final String HBASE_CLIENT_IPC_POOL_SIZE = "hbase.client.ipc.pool.size";<a name="line.308"></a>
+<span class="sourceLineNo">309</span><a name="line.309"></a>
+<span class="sourceLineNo">310</span>  /** Parameter name for HBase client operation timeout. */<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  public static final String HBASE_CLIENT_OPERATION_TIMEOUT = "hbase.client.operation.timeout";<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  /** Parameter name for HBase client operation timeout. */<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public static final String HBASE_CLIENT_META_OPERATION_TIMEOUT =<a name="line.314"></a>
+<span class="sourceLineNo">315</span>    "hbase.client.meta.operation.timeout";<a name="line.315"></a>
 <span class="sourceLineNo">316</span><a name="line.316"></a>
-<span class="sourceLineNo">317</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.317"></a>
-<span class="sourceLineNo">318</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.318"></a>
+<span class="sourceLineNo">317</span>  /** Default HBase client operation timeout, which is tantamount to a blocking call */<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  public static final int DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT = 1200000;<a name="line.318"></a>
 <span class="sourceLineNo">319</span><a name="line.319"></a>
-<span class="sourceLineNo">320</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  /** Staging dir used by bulk load */<a name="line.323"></a>
-<span class="sourceLineNo">324</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.324"></a>
-<span class="sourceLineNo">325</span><a name="line.325"></a>
-<span class="sourceLineNo">326</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  /** Used by HBCK to sideline backup data */<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<a name="line.329"></a>
-<span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  /** Any artifacts left from migration can be moved here */<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.332"></a>
-<span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.335"></a>
-<span class="sourceLineNo">336</span><a name="line.336"></a>
-<span class="sourceLineNo">337</span>  /** Conf key for the max file size after which we split the region */<a name="line.337"></a>
-<span class="sourceLineNo">338</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      "hbase.hregion.max.filesize";<a name="line.339"></a>
+<span class="sourceLineNo">320</span>  /** Parameter name for HBase client meta replica scan call timeout. */<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      "hbase.client.meta.replica.scan.timeout";<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  /** Default HBase client meta replica scan call timeout, 1 second */<a name="line.324"></a>
+<span class="sourceLineNo">325</span>  public static final int HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT = 1000000;<a name="line.325"></a>
+<span class="sourceLineNo">326</span><a name="line.326"></a>
+<span class="sourceLineNo">327</span>  /** Used to construct the name of the log directory for a region server */<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public static final String HREGION_LOGDIR_NAME = "WALs";<a name="line.328"></a>
+<span class="sourceLineNo">329</span><a name="line.329"></a>
+<span class="sourceLineNo">330</span>  /** Used to construct the name of the splitlog directory for a region server */<a name="line.330"></a>
+<span class="sourceLineNo">331</span>  public static final String SPLIT_LOGDIR_NAME = "splitWAL";<a name="line.331"></a>
+<span class="sourceLineNo">332</span><a name="line.332"></a>
+<span class="sourceLineNo">333</span>  /** Like the previous, but for old logs that are about to be deleted */<a name="line.333"></a>
+<span class="sourceLineNo">334</span>  public static final String HREGION_OLDLOGDIR_NAME = "oldWALs";<a name="line.334"></a>
+<span class="sourceLineNo">335</span><a name="line.335"></a>
+<span class="sourceLineNo">336</span>  /** Staging dir used by bulk load */<a name="line.336"></a>
+<span class="sourceLineNo">337</span>  public static final String BULKLOAD_STAGING_DIR_NAME = "staging";<a name="line.337"></a>
+<span class="sourceLineNo">338</span><a name="line.338"></a>
+<span class="sourceLineNo">339</span>  public static final String CORRUPT_DIR_NAME = "corrupt";<a name="line.339"></a>
 <span class="sourceLineNo">340</span><a name="line.340"></a>
-<span class="sourceLineNo">341</span>  /** Default maximum file size */<a name="line.341"></a>
-<span class="sourceLineNo">342</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.342"></a>
+<span class="sourceLineNo">341</span>  /** Used by HBCK to sideline backup data */<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public static final String HBCK_SIDELINEDIR_NAME = ".hbck";<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>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.345"></a>
-<span class="sourceLineNo">346</span>   */<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  /**<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * Default max row size (1 Gb).<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   */<a name="line.351"></a>
-<span class="sourceLineNo">352</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<a name="line.352"></a>
+<span class="sourceLineNo">344</span>  /** Any artifacts left from migration can be moved here */<a name="line.344"></a>
+<span class="sourceLineNo">345</span>  public static final String MIGRATION_NAME = ".migration";<a name="line.345"></a>
+<span class="sourceLineNo">346</span><a name="line.346"></a>
+<span class="sourceLineNo">347</span>  /** Used to construct the name of the compaction directory during compaction */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  public static final String HREGION_COMPACTIONDIR_NAME = "compaction.dir";<a name="line.348"></a>
+<span class="sourceLineNo">349</span><a name="line.349"></a>
+<span class="sourceLineNo">350</span>  /** Conf key for the max file size after which we split the region */<a name="line.350"></a>
+<span class="sourceLineNo">351</span>  public static final String HREGION_MAX_FILESIZE =<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      "hbase.hregion.max.filesize";<a name="line.352"></a>
 <span class="sourceLineNo">353</span><a name="line.353"></a>
-<span class="sourceLineNo">354</span>  /**<a name="line.354"></a>
-<span class="sourceLineNo">355</span>   * The max number of threads used for opening and closing stores or store<a name="line.355"></a>
-<span class="sourceLineNo">356</span>   * files in parallel<a name="line.356"></a>
-<span class="sourceLineNo">357</span>   */<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    "hbase.hstore.open.and.close.threads.max";<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>   * The default number for the max number of threads used for opening and<a name="line.362"></a>
-<span class="sourceLineNo">363</span>   * closing stores or store files in parallel<a name="line.363"></a>
+<span class="sourceLineNo">354</span>  /** Default maximum file size */<a name="line.354"></a>
+<span class="sourceLineNo">355</span>  public static final long DEFAULT_MAX_FILE_SIZE = 10 * 1024 * 1024 * 1024L;<a name="line.355"></a>
+<span class="sourceLineNo">356</span><a name="line.356"></a>
+<span class="sourceLineNo">357</span>  /**<a name="line.357"></a>
+<span class="sourceLineNo">358</span>   * Max size of single row for Get's or Scan's without in-row scanning flag set.<a name="line.358"></a>
+<span class="sourceLineNo">359</span>   */<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  public static final String TABLE_MAX_ROWSIZE_KEY = "hbase.table.max.rowsize";<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>   * Default max row size (1 Gb).<a name="line.363"></a>
 <span class="sourceLineNo">364</span>   */<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.365"></a>
+<span class="sourceLineNo">365</span>  public static final long TABLE_MAX_ROWSIZE_DEFAULT = 1024 * 1024 * 1024L;<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>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.368"></a>
-<span class="sourceLineNo">369</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.369"></a>
-<span class="sourceLineNo">370</span>   * runaway memstore during spikes in update traffic.<a name="line.370"></a>
-<span class="sourceLineNo">371</span>   */<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.372"></a>
-<span class="sourceLineNo">373</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>  /**<a name="line.375"></a>
-<span class="sourceLineNo">376</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.376"></a>
+<span class="sourceLineNo">368</span>   * The max number of threads used for opening and closing stores or store<a name="line.368"></a>
+<span class="sourceLineNo">369</span>   * files in parallel<a name="line.369"></a>
+<span class="sourceLineNo">370</span>   */<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public static final String HSTORE_OPEN_AND_CLOSE_THREADS_MAX =<a name="line.371"></a>
+<span class="sourceLineNo">372</span>    "hbase.hstore.open.and.close.threads.max";<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  /**<a name="line.374"></a>
+<span class="sourceLineNo">375</span>   * The default number for the max number of threads used for opening and<a name="line.375"></a>
+<span class="sourceLineNo">376</span>   * closing stores or store files in parallel<a name="line.376"></a>
 <span class="sourceLineNo">377</span>   */<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.378"></a>
+<span class="sourceLineNo">378</span>  public static final int DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX = 1;<a name="line.378"></a>
 <span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      "hbase.hregion.memstore.flush.size";<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.387"></a>
-<span class="sourceLineNo">388</span>      false;<a name="line.388"></a>
-<span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.391"></a>
+<span class="sourceLineNo">380</span>  /**<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * Block updates if memstore has hbase.hregion.memstore.block.multiplier<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * times hbase.hregion.memstore.flush.size bytes.  Useful preventing<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   * runaway memstore during spikes in update traffic.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>   */<a name="line.384"></a>
+<span class="sourceLineNo">385</span>  public static final String HREGION_MEMSTORE_BLOCK_MULTIPLIER =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          "hbase.hregion.memstore.block.multiplier";<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  /**<a name="line.388"></a>
+<span class="sourceLineNo">389</span>   * Default value for hbase.hregion.memstore.block.multiplier<a name="line.389"></a>
+<span class="sourceLineNo">390</span>   */<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  public static final int DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER = 4;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  /** name of the file for unique cluster ID */<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.394"></a>
-<span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  /** Default value for cluster ID */<a name="line.396"></a>
-<span class="sourceLineNo">397</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.397"></a>
-<span class="sourceLineNo">398</span><a name="line.398"></a>
-<span class="sourceLineNo">399</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.402"></a>
-<span class="sourceLineNo">403</span><a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // Always store the location of the root table's HRegion.<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  // This HRegion is never split.<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  // Do we ever need to know all the information that we are storing?<a name="line.409"></a>
-<span class="sourceLineNo">410</span><a name="line.410"></a>
-<span class="sourceLineNo">411</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  // "." (and since no other table name can start with either of these<a name="line.414"></a>
-<span class="sourceLineNo">415</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.420"></a>
-<span class="sourceLineNo">421</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  // should go down.<a name="line.422"></a>
+<span class="sourceLineNo">393</span>  /** Conf key for the memstore size at which we flush the memstore */<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  public static final String HREGION_MEMSTORE_FLUSH_SIZE =<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      "hbase.hregion.memstore.flush.size";<a name="line.395"></a>
+<span class="sourceLineNo">396</span><a name="line.396"></a>
+<span class="sourceLineNo">397</span>  public static final String HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      "hbase.hregion.edits.replay.skip.errors";<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>  public static final boolean DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS =<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      false;<a name="line.401"></a>
+<span class="sourceLineNo">402</span><a name="line.402"></a>
+<span class="sourceLineNo">403</span>  /** Maximum value length, enforced on KeyValue construction */<a name="line.403"></a>
+<span class="sourceLineNo">404</span>  public static final int MAXIMUM_VALUE_LENGTH = Integer.MAX_VALUE - 1;<a name="line.404"></a>
+<span class="sourceLineNo">405</span><a name="line.405"></a>
+<span class="sourceLineNo">406</span>  /** name of the file for unique cluster ID */<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  public static final String CLUSTER_ID_FILE_NAME = "hbase.id";<a name="line.407"></a>
+<span class="sourceLineNo">408</span><a name="line.408"></a>
+<span class="sourceLineNo">409</span>  /** Default value for cluster ID */<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  public static final String CLUSTER_ID_DEFAULT = "default-cluster";<a name="line.410"></a>
+<span class="sourceLineNo">411</span><a name="line.411"></a>
+<span class="sourceLineNo">412</span>  /** Parameter name for # days to keep MVCC values during a major compaction */<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  public static final String KEEP_SEQID_PERIOD = "hbase.hstore.compaction.keep.seqId.period";<a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /** At least to keep MVCC values in hfiles for 5 days */<a name="line.414"></a>
+<span class="sourceLineNo">415</span>  public static final int MIN_KEEP_SEQID_PERIOD = 5;<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>  // Always store the location of the root table's HRegion.<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  // This HRegion is never split.<a name="line.418"></a>
+<span class="sourceLineNo">419</span><a name="line.419"></a>
+<span class="sourceLineNo">420</span>  // region name = table + startkey + regionid. This is the row key.<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  // each row in the root and meta tables describes exactly 1 region<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  // Do we ever need to know all the information that we are storing?<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.424"></a>
-<span class="sourceLineNo">425</span><a name="line.425"></a>
-<span class="sourceLineNo">426</span>  /** delimiter used between portions of a region name */<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>  /** The catalog family as a string*/<a name="line.429"></a>
-<span class="sourceLineNo">430</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>  /** The catalog family */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>  /** The RegionInfo qualifier as a string */<a name="line.435"></a>
-<span class="sourceLineNo">436</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.436"></a>
-<span class="sourceLineNo">437</span><a name="line.437"></a>
-<span class="sourceLineNo">438</span>  /** The regioninfo column qualifier */<a name="line.438"></a>
-<span class="sourceLineNo">439</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.439"></a>
-<span class="sourceLineNo">440</span><a name="line.440"></a>
-<span class="sourceLineNo">441</span>  /** The server column qualifier */<a name="line.441"></a>
-<span class="sourceLineNo">442</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.442"></a>
-<span class="sourceLineNo">443</span>  /** The server column qualifier */<a name="line.443"></a>
-<span class="sourceLineNo">444</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.444"></a>
-<span class="sourceLineNo">445</span><a name="line.445"></a>
-<span class="sourceLineNo">446</span>  /** The startcode column qualifier */<a name="line.446"></a>
-<span class="sourceLineNo">447</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.447"></a>
-<span class="sourceLineNo">448</span>  /** The startcode column qualifier */<a name="line.448"></a>
-<span class="sourceLineNo">449</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.449"></a>
+<span class="sourceLineNo">424</span>  // Note that the name of the root table starts with "-" and the name of the<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  // meta table starts with "." Why? it's a trick. It turns out that when we<a name="line.425"></a>
+<span class="sourceLineNo">426</span>  // store region names in memory, we use a SortedMap. Since "-" sorts before<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  // "." (and since no other table name can start with either of these<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  // characters, the root region will always be the first entry in such a Map,<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // followed by all the meta regions (which will be ordered by their starting<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  // row key as well), followed by all user tables. So when the Master is<a name="line.430"></a>
+<span class="sourceLineNo">431</span>  // choosing regions to assign, it will always choose the root region first,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  // followed by the meta regions, followed by user regions. Since the root<a name="line.432"></a>
+<span class="sourceLineNo">433</span>  // and meta regions always need to be on-line, this ensures that they will<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  // be the first to be reassigned if the server(s) they are being served by<a name="line.434"></a>
+<span class="sourceLineNo">435</span>  // should go down.<a name="line.435"></a>
+<span class="sourceLineNo">436</span><a name="line.436"></a>
+<span class="sourceLineNo">437</span>  public static final String BASE_NAMESPACE_DIR = "data";<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>  /** delimiter used between portions of a region name */<a name="line.439"></a>
+<span class="sourceLineNo">440</span>  public static final int META_ROW_DELIMITER = ',';<a name="line.440"></a>
+<span class="sourceLineNo">441</span><a name="line.441"></a>
+<span class="sourceLineNo">442</span>  /** The catalog family as a string*/<a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public static final String CATALOG_FAMILY_STR = "info";<a name="line.443"></a>
+<span class="sourceLineNo">444</span><a name="line.444"></a>
+<span class="sourceLineNo">445</span>  /** The catalog family */<a name="line.445"></a>
+<span class="sourceLineNo">446</span>  public static final byte [] CATALOG_FAMILY = Bytes.toBytes(CATALOG_FAMILY_STR);<a name="line.446"></a>
+<span class="sourceLineNo">447</span><a name="line.447"></a>
+<span class="sourceLineNo">448</span>  /** The RegionInfo qualifier as a string */<a name="line.448"></a>
+<span class="sourceLineNo">449</span>  public static final String REGIONINFO_QUALIFIER_STR = "regioninfo";<a name="line.449"></a>
 <span class="sourceLineNo">450</span><a name="line.450"></a>
-<span class="sourceLineNo">451</span>  /** The open seqnum column qualifier */<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  /** The open seqnum column qualifier */<a name="line.453"></a>
-<span class="sourceLineNo">454</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>  /** The state column qualifier */<a name="line.456"></a>
-<span class="sourceLineNo">457</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.457"></a>
+<span class="sourceLineNo">451</span>  /** The regioninfo column qualifier */<a name="line.451"></a>
+<span class="sourceLineNo">452</span>  public static final byte [] REGIONINFO_QUALIFIER = Bytes.toBytes(REGIONINFO_QUALIFIER_STR);<a name="line.452"></a>
+<span class="sourceLineNo">453</span><a name="line.453"></a>
+<span class="sourceLineNo">454</span>  /** The server column qualifier */<a name="line.454"></a>
+<span class="sourceLineNo">455</span>  public static final String SERVER_QUALIFIER_STR = "server";<a name="line.455"></a>
+<span class="sourceLineNo">456</span>  /** The server column qualifier */<a name="line.456"></a>
+<span class="sourceLineNo">457</span>  public static final byte [] SERVER_QUALIFIER = Bytes.toBytes(SERVER_QUALIFIER_STR);<a name="line.457"></a>
 <span class="sourceLineNo">458</span><a name="line.458"></a>
-<span class="sourceLineNo">459</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.459"></a>
-<span class="sourceLineNo">460</span><a name="line.460"></a>
-<span class="sourceLineNo">461</span>  /**<a name="line.461"></a>
-<span class="sourceLineNo">462</span>   * The serverName column qualifier. Its the server where the region is<a name="line.462"></a>
-<span class="sourceLineNo">463</span>   * transitioning on, while column server is the server where the region is<a name="line.463"></a>
-<span class="sourceLineNo">464</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.464"></a>
-<span class="sourceLineNo">465</span>   */<a name="line.465"></a>
-<span class="sourceLineNo">466</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.468"></a>
-<span class="sourceLineNo">469</span><a name="line.469"></a>
-<span class="sourceLineNo">470</span>  /** The lower-half split region column qualifier */<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.471"></a>
-<span class="sourceLineNo">472</span><a name="line.472"></a>
-<span class="sourceLineNo">473</span>  /** The upper-half split region column qualifier */<a name="line.473"></a>
-<span class="sourceLineNo">474</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.474"></a>
-<span class="sourceLineNo">475</span><a name="line.475"></a>
-<span class="sourceLineNo">476</span>  /** The lower-half merge region column qualifier */<a name="line.476"></a>
-<span class="sourceLineNo">477</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.477"></a>
-<span class="sourceLineNo">478</span><a name="line.478"></a>
-<span class="sourceLineNo">479</span>  /** The upper-half merge region column qualifier */<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>  /** The catalog family as a string*/<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /** The catalog family */<a name="line.485"></a>
-<span class="sourceLineNo">486</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>  /** The serialized table state qualifier */<a name="line.488"></a>
-<span class="sourceLineNo">489</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>  /** The replication barrier family as a string*/<a name="line.491"></a>
-<span class="sourceLineNo">492</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.492"></a>
-<span class="sourceLineNo">493</span><a name="line.493"></a>
-<span class="sourceLineNo">494</span>  /** The replication barrier family */<a name="line.494"></a>
-<span class="sourceLineNo">495</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.495"></a>
-<span class="sourceLineNo">496</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<a name="line.496"></a>
+<span class="sourceLineNo">459</span>  /** The startcode column qualifier */<a name="line.459"></a>
+<span class="sourceLineNo">460</span>  public static final String STARTCODE_QUALIFIER_STR = "serverstartcode";<a name="line.460"></a>
+<span class="sourceLineNo">461</span>  /** The startcode column qualifier */<a name="line.461"></a>
+<span class="sourceLineNo">462</span>  public static final byte [] STARTCODE_QUALIFIER = Bytes.toBytes(STARTCODE_QUALIFIER_STR);<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>  /** The open seqnum column qualifier */<a name="line.464"></a>
+<span class="sourceLineNo">465</span>  public static final String SEQNUM_QUALIFIER_STR = "seqnumDuringOpen";<a name="line.465"></a>
+<span class="sourceLineNo">466</span>  /** The open seqnum column qualifier */<a name="line.466"></a>
+<span class="sourceLineNo">467</span>  public static final byte [] SEQNUM_QUALIFIER = Bytes.toBytes(SEQNUM_QUALIFIER_STR);<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  /** The state column qualifier */<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  public static final String STATE_QUALIFIER_STR = "state";<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  public static final byte [] STATE_QUALIFIER = Bytes.toBytes(STATE_QUALIFIER_STR);<a name="line.472"></a>
+<span class="sourceLineNo">473</span><a name="line.473"></a>
+<span class="sourceLineNo">474</span>  /**<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * The serverName column qualifier. Its the server where the region is<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * transitioning on, while column server is the server where the region is<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * opened on. They are the same when the region is in state OPEN.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   */<a name="line.478"></a>
+<span class="sourceLineNo">479</span>  public static final String SERVERNAME_QUALIFIER_STR = "sn";<a name="line.479"></a>
+<span class="sourceLineNo">480</span><a name="line.480"></a>
+<span class="sourceLineNo">481</span>  public static final byte [] SERVERNAME_QUALIFIER = Bytes.toBytes(SERVERNAME_QUALIFIER_STR);<a name="line.481"></a>
+<span class="sourceLineNo">482</span><a name="line.482"></a>
+<span class="sourceLineNo">483</span>  /** The lower-half split region column qualifier */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public static final byte [] SPLITA_QUALIFIER = Bytes.toBytes("splitA");<a name="line.484"></a>
+<span class="sourceLineNo">485</span><a name="line.485"></a>
+<span class="sourceLineNo">486</span>  /** The upper-half split region column qualifier */<a name="line.486"></a>
+<span class="sourceLineNo">487</span>  public static final byte [] SPLITB_QUALIFIER = Bytes.toBytes("splitB");<a name="line.487"></a>
+<span class="sourceLineNo">488</span><a name="line.488"></a>
+<span class="sourceLineNo">489</span>  /** The lower-half merge region column qualifier */<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  public static final byte[] MERGEA_QUALIFIER = Bytes.toBytes("mergeA");<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span>  /** The upper-half merge region column qualifier */<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  public static final byte[] MERGEB_QUALIFIER = Bytes.toBytes("mergeB");<a name="line.493"></a>
+<span class="sourceLineNo">494</span><a name="line.494"></a>
+<span class="sourceLineNo">495</span>  /** The catalog family as a string*/<a name="line.495"></a>
+<span class="sourceLineNo">496</span>  public static final String TABLE_FAMILY_STR = "table";<a name="line.496"></a>
 <span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  /**<a name="line.498"></a>
-<span class="sourceLineNo">499</span>   * The meta table version column qualifier.<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * table: i.e. in the 'info:v' column.<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   */<a name="line.502"></a>
-<span class="sourceLineNo">503</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<a name="line.503"></a>
-<span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>  /**<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * The current version of the meta table.<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.509"></a>
-<span class="sourceLineNo">510</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.510"></a>
-<span class="sourceLineNo">511</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.511"></a>
-<span class="sourceLineNo">512</span>   * byte[] serialization from Writables to Protobuf.<a name="line.512"></a>
-<span class="sourceLineNo">513</span>   * See HRegionInfo.VERSION<a name="line.513"></a>
-<span class="sourceLineNo">514</span>   */<a name="line.514"></a>
-<span class="sourceLineNo">515</span>  public static final short META_VERSION = 1;<a name="line.515"></a>
-<span class="sourceLineNo">516</span><a name="line.516"></a>
-<span class="sourceLineNo">517</span>  // Other constants<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>   * An empty instance.<a name="line.520"></a>
-<span class="sourceLineNo">521</span>   */<a name="line.521"></a>
-<span class="sourceLineNo">522</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.522"></a>
-<span class="sourceLineNo">523</span><a name="line.523"></a>
-<span class="sourceLineNo">524</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<a name="line.524"></a>
-<span class="sourceLineNo">525</span><a name="line.525"></a>
-<span class="sourceLineNo">526</span>  /**<a name="line.526"></a>
-<span class="sourceLineNo">527</span>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.527"></a>
-<span class="sourceLineNo">528</span>   */<a name="line.528"></a>
-<span class="sourceLineNo">529</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<a name="line.529"></a>
-<span class="sourceLineNo">530</span><a name="line.530"></a>
-<span class="sourceLineNo">531</span>  /**<a name="line.531"></a>
-<span class="sourceLineNo">532</span>   * Last row in a table.<a name="line.532"></a>
-<span class="sourceLineNo">533</span>   */<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.534"></a>
-<span class="sourceLineNo">535</span><a name="line.535"></a>
-<span class="sourceLineNo">536</span>  /**<a name="line.536"></a>
-<span class="sourceLineNo">537</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.537"></a>
-<span class="sourceLineNo">538</span>    * table<a name="line.538"></a>
-<span class="sourceLineNo">539</span>    */<a name="line.539"></a>
-<span class="sourceLineNo">540</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.540"></a>
-<span class="sourceLineNo">541</span><a name="line.541"></a>
-<span class="sourceLineNo">542</span>  /**<a name="line.542"></a>
-<span class="sourceLineNo">543</span>   * Max length a row can have because of the limitation in TFile.<a name="line.543"></a>
-<span class="sourceLineNo">544</span>   */<a name="line.544"></a>
-<span class="sourceLineNo">545</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.545"></a>
-<span class="sourceLineNo">546</span><a name="line.546"></a>
-<span class="sourceLineNo">547</span>  /**<a name="line.547"></a>
-<span class="sourceLineNo">548</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.548"></a>
-<span class="sourceLineNo">549</span>   *<a name="line.549"></a>
-<span class="sourceLineNo">550</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.550"></a>
-<span class="sourceLineNo">551</span>   * to refer to the latest.<a name="line.551"></a>
-<span class="sourceLineNo">552</span>   * On server side, this acts as a notation.<a name="line.552"></a>
-<span class="sourceLineNo">553</span>   * (1) For a cell of Put, which has this notation,<a name="line.553"></a>
-<span class="sourceLineNo">554</span>   *     its timestamp will be replaced with server's current time.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>   * (2) For a cell of Delete, which has this notation,<a name="line.555"></a>
-<span class="sourceLineNo">556</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.556"></a>
-<span class="sourceLineNo">557</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.557"></a>
-<span class="sourceLineNo">558</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.559"></a>
-<span class="sourceLineNo">560</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.560"></a>
-<span class="sourceLineNo">561</span>   *           gets.<a name="line.561"></a>
-<span class="sourceLineNo">562</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.562"></a>
-<span class="sourceLineNo">563</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.563"></a>
-<span class="sourceLineNo">564</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.564"></a>
-<span class="sourceLineNo">565</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.565"></a>
-<span class="sourceLineNo">566</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.566"></a>
-<span class="sourceLineNo">567</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   *<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.569"></a>
-<span class="sourceLineNo">570</span>   */<a name="line.570"></a>
-<span class="sourceLineNo">571</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<a name="line.571"></a>
-<span class="sourceLineNo">572</span><a name="line.572"></a>
-<span class="sourceLineNo">573</span>  /**<a name="line.573"></a>
-<span class="sourceLineNo">574</span>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.574"></a>
-<span class="sourceLineNo">575</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.575"></a>
-<span class="sourceLineNo">576</span>   * a client.<a name="line.576"></a>
-<span class="sourceLineNo">577</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.577"></a>
-<span class="sourceLineNo">578</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.578"></a>
-<span class="sourceLineNo">579</span>   */<a name="line.579"></a>
-<span class="sourceLineNo">580</span>  @Deprecated<a name="line.580"></a>
-<span class="sourceLineNo">581</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.581"></a>
-<span class="sourceLineNo">582</span><a name="line.582"></a>
-<span class="sourceLineNo">583</span>  /**<a name="line.583"></a>
-<span class="sourceLineNo">584</span>   * LATEST_TIMESTAMP in bytes form<a name="line.584"></a>
-<span class="sourceLineNo">585</span>   */<a name="line.585"></a>
-<span class="sourceLineNo">586</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.586"></a>
-<span class="sourceLineNo">587</span>    // big-endian<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.589"></a>
-<span class="sourceLineNo">590</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.590"></a>
-<span class="sourceLineNo">591</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.591"></a>
-<span class="sourceLineNo">592</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    (byte) LATEST_TIMESTAMP,<a name="line.595"></a>
-<span class="sourceLineNo">596</span>  };<a name="line.596"></a>
-<span class="sourceLineNo">597</span><a name="line.597"></a>
-<span class="sourceLineNo">598</span>  /**<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   * Define for 'return-all-versions'.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   */<a name="line.600"></a>
-<span class="sourceLineNo">601</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.601"></a>
-<span class="sourceLineNo">602</span><a name="line.602"></a>
-<span class="sourceLineNo">603</span>  /**<a name="line.603"></a>
-<span class="sourceLineNo">604</span>   * Unlimited time-to-live.<a name="line.604"></a>
-<span class="sourceLineNo">605</span>   */<a name="line.605"></a>
-<span class="sourceLineNo">606</span>//  public static final int FOREVER = -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>  public static final int FOREVER = Integer.MAX_VALUE;<a name="line.607"></a>
-<span class="sourceLineNo">608</span><a name="line.608"></a>
-<span class="sourceLineNo">609</span>  /**<a name="line.609"></a>
-<span class="sourceLineNo">610</span>   * Seconds in a day, hour and minute<a name="line.610"></a>
-<span class="sourceLineNo">611</span>   */<a name="line.611"></a>
-<span class="sourceLineNo">612</span>  public static final int DAY_IN_SECONDS = 24 * 60 * 60;<a name="line.612"></a>
-<span class="sourceLineNo">613</span>  public static final int HOUR_IN_SECONDS = 60 * 60;<a name="line.613"></a>
-<span class="sourceLineNo">614</span>  public static final int MINUTE_IN_SECONDS = 60;<a name="line.614"></a>
+<span class="sourceLineNo">498</span>  /** The catalog family */<a name="line.498"></a>
+<span class="sourceLineNo">499</span>  public static final byte [] TABLE_FAMILY = Bytes.toBytes(TABLE_FAMILY_STR);<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>  /** The serialized table state qualifier */<a name="line.501"></a>
+<span class="sourceLineNo">502</span>  public static final byte[] TABLE_STATE_QUALIFIER = Bytes.toBytes("state");<a name="line.502"></a>
+<span class="sourceLineNo">503</span><a name="line.503"></a>
+<span class="sourceLineNo">504</span>  /** The replication barrier family as a string*/<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static final String REPLICATION_BARRIER_FAMILY_STR = "rep_barrier";<a name="line.505"></a>
+<span class="sourceLineNo">506</span><a name="line.506"></a>
+<span class="sourceLineNo">507</span>  /** The replication barrier family */<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  public static final byte[] REPLICATION_BARRIER_FAMILY =<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      Bytes.toBytes(REPLICATION_BARRIER_FAMILY_STR);<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>   * The meta table version column qualifier.<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * We keep current version of the meta table in this column in &lt;code&gt;-ROOT-&lt;/code&gt;<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * table: i.e. in the 'info:v' column.<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   */<a name="line.515"></a>
+<span class="sourceLineNo">516</span>  public static final byte [] META_VERSION_QUALIFIER = Bytes.toBytes("v");<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>   * The current version of the meta table.<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   * - pre-hbase 0.92.  There is no META_VERSION column in the root table<a name="line.520"></a>
+<span class="sourceLineNo">521</span>   * in this case. The meta has HTableDescriptor serialized into the HRegionInfo;<a name="line.521"></a>
+<span class="sourceLineNo">522</span>   * - version 0 is 0.92 and 0.94. Meta data has serialized HRegionInfo's using<a name="line.522"></a>
+<span class="sourceLineNo">523</span>   * Writable serialization, and HRegionInfo's does not contain HTableDescriptors.<a name="line.523"></a>
+<span class="sourceLineNo">524</span>   * - version 1 for 0.96+ keeps HRegionInfo data structures, but changes the<a name="line.524"></a>
+<span class="sourceLineNo">525</span>   * byte[] serialization from Writables to Protobuf.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>   * See HRegionInfo.VERSION<a name="line.526"></a>
+<span class="sourceLineNo">527</span>   */<a name="line.527"></a>
+<span class="sourceLineNo">528</span>  public static final short META_VERSION = 1;<a name="line.528"></a>
+<span class="sourceLineNo">529</span><a name="line.529"></a>
+<span class="sourceLineNo">530</span>  // Other constants<a name="line.530"></a>
+<span class="sourceLineNo">531</span><a name="line.531"></a>
+<span class="sourceLineNo">532</span>  /**<a name="line.532"></a>
+<span class="sourceLineNo">533</span>   * An empty instance.<a name="line.533"></a>
+<span class="sourceLineNo">534</span>   */<a name="line.534"></a>
+<span class="sourceLineNo">535</span>  public static final byte [] EMPTY_BYTE_ARRAY = new byte [0];<a name="line.535"></a>
+<span class="sourceLineNo">536</span><a name="line.536"></a>
+<span class="sourceLineNo">537</span>  public static final ByteBuffer EMPTY_BYTE_BUFFER = ByteBuffer.wrap(EMPTY_BYTE_ARRAY);<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>   * Used by scanners, etc when they want to start at the beginning of a region<a name="line.540"></a>
+<span class="sourceLineNo">541</span>   */<a name="line.541"></a>
+<span class="sourceLineNo">542</span>  public static final byte [] EMPTY_START_ROW = EMPTY_BYTE_ARRAY;<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>   * Last row in a table.<a name="line.545"></a>
+<span class="sourceLineNo">546</span>   */<a name="line.546"></a>
+<span class="sourceLineNo">547</span>  public static final byte [] EMPTY_END_ROW = EMPTY_START_ROW;<a name="line.547"></a>
+<span class="sourceLineNo">548</span><a name="line.548"></a>
+<span class="sourceLineNo">549</span>  /**<a name="line.549"></a>
+<span class="sourceLineNo">550</span>    * Used by scanners and others when they're trying to detect the end of a<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    * table<a name="line.551"></a>
+<span class="sourceLineNo">552</span>    */<a name="line.552"></a>
+<span class="sourceLineNo">553</span>  public static final byte [] LAST_ROW = EMPTY_BYTE_ARRAY;<a name="line.553"></a>
+<span class="sourceLineNo">554</span><a name="line.554"></a>
+<span class="sourceLineNo">555</span>  /**<a name="line.555"></a>
+<span class="sourceLineNo">556</span>   * Max length a row can have because of the limitation in TFile.<a name="line.556"></a>
+<span class="sourceLineNo">557</span>   */<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  public static final int MAX_ROW_LENGTH = Short.MAX_VALUE;<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * Timestamp to use when we want to refer to the latest cell.<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   *<a name="line.562"></a>
+<span class="sourceLineNo">563</span>   * On client side, this is the timestamp set by default when no timestamp is specified,<a name="line.563"></a>
+<span class="sourceLineNo">564</span>   * to refer to the latest.<a name="line.564"></a>
+<span class="sourceLineNo">565</span>   * On server side, this acts as a notation.<a name="line.565"></a>
+<span class="sourceLineNo">566</span>   * (1) For a cell of Put, which has this notation,<a name="line.566"></a>
+<span class="sourceLineNo">567</span>   *     its timestamp will be replaced with server's current time.<a name="line.567"></a>
+<span class="sourceLineNo">568</span>   * (2) For a cell of Delete, which has this notation,<a name="line.568"></a>
+<span class="sourceLineNo">569</span>   *     A. If the cell is of {@link KeyValue.Type#Delete}, HBase issues a Get operation firstly.<a name="line.569"></a>
+<span class="sourceLineNo">570</span>   *        a. When the count of cell it gets is less than the count of cell to delete,<a name="line.570"></a>
+<span class="sourceLineNo">571</span>   *           the timestamp of Delete cell will be replaced with server's current time.<a name="line.571"></a>
+<span class="sourceLineNo">572</span>   *        b. When the count of cell it gets is equal to the count of cell to delete,<a name="line.572"></a>
+<span class="sourceLineNo">573</span>   *           the timestamp of Delete cell will be replaced with the latest timestamp of cell it<a name="line.573"></a>
+<span class="sourceLineNo">574</span>   *           gets.<a name="line.574"></a>
+<span class="sourceLineNo">575</span>   *       (c. It is invalid and an exception will be thrown,<a name="line.575"></a>
+<span class="sourceLineNo">576</span>   *           if the count of cell it gets is greater than the count of cell to delete,<a name="line.576"></a>
+<span class="sourceLineNo">577</span>   *           as the max version of Get is set to the count of cell to delete.)<a name="line.577"></a>
+<span class="sourceLineNo">578</span>   *     B. If the cell is of other Delete types, like {@link KeyValue.Type#DeleteFamilyVersion},<a name="line.578"></a>
+<span class="sourceLineNo">579</span>   *        {@link KeyValue.Type#DeleteColumn}, or {@link KeyValue.Type#DeleteFamily},<a name="line.579"></a>
+<span class="sourceLineNo">580</span>   *        the timestamp of Delete cell will be replaced with server's current time.<a name="line.580"></a>
+<span class="sourceLineNo">581</span>   *<a name="line.581"></a>
+<span class="sourceLineNo">582</span>   * So that is why it is named as "latest" but assigned as the max value of Long.<a name="line.582"></a>
+<span class="sourceLineNo">583</span>   */<a name="line.583"></a>
+<span class="sourceLineNo">584</span>  public static final long LATEST_TIMESTAMP = Long.MAX_VALUE;<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>   * Timestamp to use when we want to refer to the oldest cell.<a name="line.587"></a>
+<span class="sourceLineNo">588</span>   * Special! Used in fake Cells only. Should never be the timestamp on an actual Cell returned to<a name="line.588"></a>
+<span class="sourceLineNo">589</span>   * a client.<a name="line.589"></a>
+<span class="sourceLineNo">590</span>   * @deprecated Should not be public since hbase-1.3.0. For internal use only. Move internal to<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *   Scanners flagged as special timestamp value never to be returned as timestamp on a Cell.<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   */<a name="line.592"></a>
+<span class="sourceLineNo">593</span>  @Deprecated<a name="line.593"></a>
+<span class="sourceLineNo">594</span>  public static final long OLDEST_TIMESTAMP = Long.MIN_VALUE;<a name="line.594"></a>
+<span class="sourceLineNo">595</span><a name="line.595"></a>
+<span class="sourceLineNo">596</span>  /**<a name="line.596"></a>
+<span class="sourceLineNo">597</span>   * LATEST_TIMESTAMP in bytes form<a name="line.597"></a>
+<span class="sourceLineNo">598</span>   */<a name="line.598"></a>
+<span class="sourceLineNo">599</span>  public static final byte [] LATEST_TIMESTAMP_BYTES = {<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // big-endian<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 56),<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 48),<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 40),<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 32),<a name="line.604"></a>
+<span class="sourceLineNo">605</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 24),<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 16),<a name="line.606"></a>
+<span class="sourceLineNo">607</span>    (byte) (LATEST_TIMESTAMP &gt;&gt;&gt; 8),<a name="line.607"></a>
+<span class="sourceLineNo">608</span>    (byte) LATEST_TIMESTAMP,<a name="line.608"></a>
+<span class="sourceLineNo">609</span>  };<a name="line.609"></a>
+<span class="sourceLineNo">610</span><a name="line.610"></a>
+<span class="sourceLineNo">611</span>  /**<a name="line.611"></a>
+<span class="sourceLineNo">612</span>   * Define for 'return-all-versions'.<a name="line.612"></a>
+<span class="sourceLineNo">613</span>   */<a name="line.613"></a>
+<span class="sourceLineNo">614</span>  public static final int ALL_VERSIONS = Integer.MAX_VALUE;<a name="line.614"></a>
 <span class="sourceLineNo">615</span><a name="line.615"></a>
-<span class="sourceLineNo">616</span>  //TODO: although the following are referenced widely to format strings for<a name="line.616"></a>
-<span class="sourceLineNo">617</span>  //      the shell. They really aren't a part of the public API. It would be<a name="line.617"></a>
-<span class="sourceLineNo">618</span>  //      nice if we could put them somewhere where they did not need to be<a name="line.618"></a>
-<span class="sourceLineNo">619</span>  //      public. They could have package visibility<a name="line.619"></a>
-<span class="sourceLineNo">620</span>  public static final String NAME = "NAME";<a name="line.620"></a>
-<span class="sourceLineNo">621</span>  public static final String VERSIONS = "VERSIONS";<a name="line.621"></a>
-<span class="sourceLineNo">622</span>  public static final String IN_MEMORY = "IN_MEMORY";<a name="line.622"></a>
-<span class="sourceLineNo">623</span>  public static final String METADATA = "METADATA";<a name="line.623"></a>
-<span class="sourceLineNo">624</span>  public static final String CONFIGURATION = "CONFIGURATION";<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>   * Retrying we multiply hbase.client.pause setting by what we have in this array until we<a name="line.627"></a>
-<span class="sourceLineNo">628</span>   * run out of array items.  Retries beyond this use the last number in the array.  So, for<a name="line.628"><

<TRUNCATED>

[31/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html
new file mode 100644
index 0000000..8524a6c
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html
@@ -0,0 +1,175 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.zksyncer.ClientZKSyncer</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a> in <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing subclasses, and an explanation">
+<caption><span>Subclasses of <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a> in <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></span></code>
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></span></code>
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html" target="_top">Frames</a></li>
+<li><a href="ClientZKSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html
new file mode 100644
index 0000000..a9dfb80
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html" target="_top">Frames</a></li>
+<li><a href="MasterAddressSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a> in <a href="../../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a> declared as <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/HMaster.html#masterAddressSyncer">masterAddressSyncer</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html" target="_top">Frames</a></li>
+<li><a href="MasterAddressSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html
new file mode 100644
index 0000000..9038bd8
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html
@@ -0,0 +1,165 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Class org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html" target="_top">Frames</a></li>
+<li><a href="MetaLocationSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h2 title="Uses of Class org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer</h2>
+</div>
+<div class="classUseContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList">
+<ul class="blockList">
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a> in <a href="../../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></h3>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing fields, and an explanation">
+<caption><span>Fields in <a href="../../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a> declared as <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Field and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../../org/apache/hadoop/hbase/master/HMaster.html#metaLocationSyncer">metaLocationSyncer</a></span></code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="../package-summary.html">Package</a></li>
+<li><a href="../../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">Class</a></li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="../../../../../../../overview-tree.html">Tree</a></li>
+<li><a href="../../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html" target="_top">Frames</a></li>
+<li><a href="MetaLocationSyncer.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-frame.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-frame.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-frame.html
new file mode 100644
index 0000000..253c460
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-frame.html
@@ -0,0 +1,22 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.hadoop.hbase.master.zksyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<h1 class="bar"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html" target="classFrame">org.apache.hadoop.hbase.master.zksyncer</a></h1>
+<div class="indexContainer">
+<h2 title="Classes">Classes</h2>
+<ul title="Classes">
+<li><a href="ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">ClientZKSyncer</a></li>
+<li><a href="MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">MasterAddressSyncer</a></li>
+<li><a href="MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer" target="classFrame">MetaLocationSyncer</a></li>
+</ul>
+</div>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-summary.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-summary.html
new file mode 100644
index 0000000..a2dff23
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-summary.html
@@ -0,0 +1,162 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.hadoop.hbase.master.zksyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="org.apache.hadoop.hbase.master.zksyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/snapshot/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-summary.html">Next&nbsp;Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Package" class="title">Package&nbsp;org.apache.hadoop.hbase.master.zksyncer</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="typeSummary" border="0" cellpadding="3" cellspacing="0" summary="Class Summary table, listing classes, and an explanation">
+<caption><span>Class Summary</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Class</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a></td>
+<td class="colLast">
+<div class="block">Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if
+ changed
+ <p/>
+ The target znode(s) is given through <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--"><code>ClientZKSyncer.getNodesToWatch()</code></a> method</div>
+</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MasterAddressSyncer</a></td>
+<td class="colLast">
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer">MetaLocationSyncer</a></td>
+<td class="colLast">
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li class="navBarCell1Rev">Package</li>
+<li>Class</li>
+<li><a href="package-use.html">Use</a></li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/snapshot/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-summary.html">Next&nbsp;Package</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-summary.html" target="_top">Frames</a></li>
+<li><a href="package-summary.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-tree.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-tree.html
new file mode 100644
index 0000000..7b9a1bf
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-tree.html
@@ -0,0 +1,152 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>org.apache.hadoop.hbase.master.zksyncer Class Hierarchy (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="org.apache.hadoop.hbase.master.zksyncer Class Hierarchy (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/snapshot/package-tree.html">Prev</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 class="title">Hierarchy For Package org.apache.hadoop.hbase.master.zksyncer</h1>
+<span class="packageHierarchyLabel">Package Hierarchies:</span>
+<ul class="horizontal">
+<li><a href="../../../../../../overview-tree.html">All Packages</a></li>
+</ul>
+</div>
+<div class="contentContainer">
+<h2 title="Class Hierarchy">Class Hierarchy</h2>
+<ul>
+<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Object</span></a>
+<ul>
+<li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Thread.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Thread</span></a> (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Runnable.html?is-external=true" title="class or interface in java.lang">Runnable</a>)
+<ul>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.ClientZkUpdater.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer.ClientZkUpdater</span></a></li>
+</ul>
+</li>
+<li type="circle">org.apache.hadoop.hbase.zookeeper.<a href="../../../../../../org/apache/hadoop/hbase/zookeeper/ZKListener.html" title="class in org.apache.hadoop.hbase.zookeeper"><span class="typeNameLink">ZKListener</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">ClientZKSyncer</span></a>
+<ul>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MasterAddressSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MasterAddressSyncer</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.zksyncer.<a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/MetaLocationSyncer.html" title="class in org.apache.hadoop.hbase.master.zksyncer"><span class="typeNameLink">MetaLocationSyncer</span></a></li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li>Use</li>
+<li class="navBarCell1Rev">Tree</li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li><a href="../../../../../../org/apache/hadoop/hbase/master/snapshot/package-tree.html">Prev</a></li>
+<li><a href="../../../../../../org/apache/hadoop/hbase/metrics/package-tree.html">Next</a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-tree.html" target="_top">Frames</a></li>
+<li><a href="package-tree.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-use.html b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-use.html
new file mode 100644
index 0000000..f273633
--- /dev/null
+++ b/devapidocs/org/apache/hadoop/hbase/master/zksyncer/package-use.html
@@ -0,0 +1,191 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
+<!-- NewPage -->
+<html lang="en">
+<head>
+<!-- Generated by javadoc -->
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Uses of Package org.apache.hadoop.hbase.master.zksyncer (Apache HBase 3.0.0-SNAPSHOT API)</title>
+<link rel="stylesheet" type="text/css" href="../../../../../../stylesheet.css" title="Style">
+<script type="text/javascript" src="../../../../../../script.js"></script>
+</head>
+<body>
+<script type="text/javascript"><!--
+    try {
+        if (location.href.indexOf('is-external=true') == -1) {
+            parent.document.title="Uses of Package org.apache.hadoop.hbase.master.zksyncer (Apache HBase 3.0.0-SNAPSHOT API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+</script>
+<noscript>
+<div>JavaScript is disabled on your browser.</div>
+</noscript>
+<!-- ========= START OF TOP NAVBAR ======= -->
+<div class="topNav"><a name="navbar.top">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.top.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-use.html" target="_top">Frames</a></li>
+<li><a href="package-use.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_top">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_top");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.top">
+<!--   -->
+</a></div>
+<!-- ========= END OF TOP NAVBAR ========= -->
+<div class="header">
+<h1 title="Uses of Package org.apache.hadoop.hbase.master.zksyncer" class="title">Uses of Package<br>org.apache.hadoop.hbase.master.zksyncer</h1>
+</div>
+<div class="contentContainer">
+<ul class="blockList">
+<li class="blockList">
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing packages, and an explanation">
+<caption><span>Packages that use <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Package</th>
+<th class="colLast" scope="col">Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master">org.apache.hadoop.hbase.master</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> used by <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/class-use/MasterAddressSyncer.html#org.apache.hadoop.hbase.master">MasterAddressSyncer</a>
+<div class="block">Tracks the active master address on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+<tr class="rowColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/class-use/MetaLocationSyncer.html#org.apache.hadoop.hbase.master">MetaLocationSyncer</a>
+<div class="block">Tracks the meta region locations on server ZK cluster and synchronize them to client ZK cluster
+ if changed</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a> used by <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/class-use/ClientZKSyncer.html#org.apache.hadoop.hbase.master.zksyncer">ClientZKSyncer</a>
+<div class="block">Tracks the target znode(s) on server ZK cluster and synchronize them to client ZK cluster if
+ changed
+ <p/>
+ The target znode(s) is given through <a href="../../../../../../org/apache/hadoop/hbase/master/zksyncer/ClientZKSyncer.html#getNodesToWatch--"><code>ClientZKSyncer.getNodesToWatch()</code></a> method</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
+</ul>
+</div>
+<!-- ======= START OF BOTTOM NAVBAR ====== -->
+<div class="bottomNav"><a name="navbar.bottom">
+<!--   -->
+</a>
+<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
+<a name="navbar.bottom.firstrow">
+<!--   -->
+</a>
+<ul class="navList" title="Navigation">
+<li><a href="../../../../../../overview-summary.html">Overview</a></li>
+<li><a href="package-summary.html">Package</a></li>
+<li>Class</li>
+<li class="navBarCell1Rev">Use</li>
+<li><a href="package-tree.html">Tree</a></li>
+<li><a href="../../../../../../deprecated-list.html">Deprecated</a></li>
+<li><a href="../../../../../../index-all.html">Index</a></li>
+<li><a href="../../../../../../help-doc.html">Help</a></li>
+</ul>
+</div>
+<div class="subNav">
+<ul class="navList">
+<li>Prev</li>
+<li>Next</li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../../index.html?org/apache/hadoop/hbase/master/zksyncer/package-use.html" target="_top">Frames</a></li>
+<li><a href="package-use.html" target="_top">No&nbsp;Frames</a></li>
+</ul>
+<ul class="navList" id="allclasses_navbar_bottom">
+<li><a href="../../../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
+</ul>
+<div>
+<script type="text/javascript"><!--
+  allClassesLink = document.getElementById("allclasses_navbar_bottom");
+  if(window==top) {
+    allClassesLink.style.display = "block";
+  }
+  else {
+    allClassesLink.style.display = "none";
+  }
+  //-->
+</script>
+</div>
+<a name="skip.navbar.bottom">
+<!--   -->
+</a></div>
+<!-- ======== END OF BOTTOM NAVBAR ======= -->
+<p class="legalCopy"><small>Copyright &#169; 2007&#x2013;2018 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
+</body>
+</html>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/metrics/package-summary.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/metrics/package-summary.html b/devapidocs/org/apache/hadoop/hbase/metrics/package-summary.html
index 6892244..d0d7304 100644
--- a/devapidocs/org/apache/hadoop/hbase/metrics/package-summary.html
+++ b/devapidocs/org/apache/hadoop/hbase/metrics/package-summary.html
@@ -43,7 +43,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">Prev&nbsp;Package</a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/metrics/impl/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">
@@ -303,7 +303,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/package-summary.html">Prev&nbsp;Package</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">Prev&nbsp;Package</a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/metrics/impl/package-summary.html">Next&nbsp;Package</a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/metrics/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/metrics/package-tree.html b/devapidocs/org/apache/hadoop/hbase/metrics/package-tree.html
index 223959d..093c275 100644
--- a/devapidocs/org/apache/hadoop/hbase/metrics/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/metrics/package-tree.html
@@ -43,7 +43,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/package-tree.html">Prev</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-tree.html">Prev</a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/metrics/impl/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">
@@ -161,7 +161,7 @@
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/package-tree.html">Prev</a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/zksyncer/package-tree.html">Prev</a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/metrics/impl/package-tree.html">Next</a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 3e1ea7f..9eb46aa 100644
--- a/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/monitoring/package-tree.html
@@ -125,8 +125,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/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>
+<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>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/package-use.html b/devapidocs/org/apache/hadoop/hbase/package-use.html
index 792a33b..48fd327 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-use.html
@@ -262,164 +262,168 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.mob">org.apache.hadoop.hbase.mob</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.master.zksyncer">org.apache.hadoop.hbase.master.zksyncer</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.mob.compactions">org.apache.hadoop.hbase.mob.compactions</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.mob">org.apache.hadoop.hbase.mob</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.namespace">org.apache.hadoop.hbase.namespace</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.mob.compactions">org.apache.hadoop.hbase.mob.compactions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.namespace">org.apache.hadoop.hbase.namespace</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure.flush">org.apache.hadoop.hbase.procedure.flush</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure">org.apache.hadoop.hbase.procedure</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure.flush">org.apache.hadoop.hbase.procedure.flush</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure2.store.wal">org.apache.hadoop.hbase.procedure2.store.wal</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure2">org.apache.hadoop.hbase.procedure2</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.procedure2.store.wal">org.apache.hadoop.hbase.procedure2.store.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas.policies">org.apache.hadoop.hbase.quotas.policies</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas">org.apache.hadoop.hbase.quotas</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.quotas.policies">org.apache.hadoop.hbase.quotas.policies</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.compactions">org.apache.hadoop.hbase.regionserver.compactions</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver">org.apache.hadoop.hbase.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.compactions">org.apache.hadoop.hbase.regionserver.compactions</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.querymatcher">org.apache.hadoop.hbase.regionserver.querymatcher</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.handler">org.apache.hadoop.hbase.regionserver.handler</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.snapshot">org.apache.hadoop.hbase.regionserver.snapshot</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.querymatcher">org.apache.hadoop.hbase.regionserver.querymatcher</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.throttle">org.apache.hadoop.hbase.regionserver.throttle</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.snapshot">org.apache.hadoop.hbase.regionserver.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="rowColor">
-<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal</a></td>
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.throttle">org.apache.hadoop.hbase.regionserver.throttle</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><a href="#org.apache.hadoop.hbase.regionserver.wal">org.apache.hadoop.hbase.regionserver.wal</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication">org.apache.hadoop.hbase.replication</a></td>
 <td class="colLast">
 <div class="block">Multi Cluster Replication</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.master">org.apache.hadoop.hbase.replication.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.replication.regionserver">org.apache.hadoop.hbase.replication.regionserver</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest">org.apache.hadoop.hbase.rest</a></td>
 <td class="colLast">
 <div class="block">HBase REST</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.client">org.apache.hadoop.hbase.rest.client</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rest.model">org.apache.hadoop.hbase.rest.model</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.rsgroup">org.apache.hadoop.hbase.rsgroup</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security">org.apache.hadoop.hbase.security</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.access">org.apache.hadoop.hbase.security.access</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.token">org.apache.hadoop.hbase.security.token</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.security.visibility">org.apache.hadoop.hbase.security.visibility</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.snapshot">org.apache.hadoop.hbase.snapshot</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift">org.apache.hadoop.hbase.thrift</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://incubator.apache.org/thrift/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.thrift2">org.apache.hadoop.hbase.thrift2</a></td>
 <td class="colLast">
 <div class="block">Provides an HBase <a href="http://thrift.apache.org/">Thrift</a>
 service.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tmpl.master">org.apache.hadoop.hbase.tmpl.master</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.tool">org.apache.hadoop.hbase.tool</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util">org.apache.hadoop.hbase.util</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.compaction">org.apache.hadoop.hbase.util.compaction</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.util.hbck">org.apache.hadoop.hbase.util.hbck</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.wal">org.apache.hadoop.hbase.wal</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><a href="#org.apache.hadoop.hbase.zookeeper">org.apache.hadoop.hbase.zookeeper</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><a href="#org.apache.hbase.archetypes.exemplars.client">org.apache.hbase.archetypes.exemplars.client</a></td>
 <td class="colLast">
 <div class="block">This package provides fully-functional exemplar Java code demonstrating
@@ -2386,6 +2390,24 @@ service.</div>
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master.zksyncer">
+<!--   -->
+</a>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing classes, and an explanation">
+<caption><span>Classes in <a href="../../../../org/apache/hadoop/hbase/package-summary.html">org.apache.hadoop.hbase</a> used by <a href="../../../../org/apache/hadoop/hbase/master/zksyncer/package-summary.html">org.apache.hadoop.hbase.master.zksyncer</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colOne" scope="col">Class and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colOne"><a href="../../../../org/apache/hadoop/hbase/class-use/Server.html#org.apache.hadoop.hbase.master.zksyncer">Server</a>
+<div class="block">Defines a curated set of shared functions implemented by HBase servers (Masters
+ and RegionServers).</div>
+</td>
+</tr>
+</tbody>
+</table>
+</li>
 <li class="blockList"><a name="org.apache.hadoop.hbase.mob">
 <!--   -->
 </a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/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 b9eb757..61c740d 100644
--- a/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/procedure2/package-tree.html
@@ -212,10 +212,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/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/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/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/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/LockType.html" title="enum in org.apache.hadoop.hbase.procedure2"><span class="typeNameLink">LockType</span></a></li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
index 31c6fd0..9effd83 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1695">HRegionServer.CompactionChecker</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.1705">HRegionServer.CompactionChecker</a>
 extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" title="class in org.apache.hadoop.hbase">ScheduledChore</a></pre>
 </li>
 </ul>
@@ -233,7 +233,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>instance</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1696">instance</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1706">instance</a></pre>
 </li>
 </ul>
 <a name="majorCompactPriority">
@@ -242,7 +242,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>majorCompactPriority</h4>
-<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1697">majorCompactPriority</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1707">majorCompactPriority</a></pre>
 </li>
 </ul>
 <a name="DEFAULT_PRIORITY">
@@ -251,7 +251,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_PRIORITY</h4>
-<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1698">DEFAULT_PRIORITY</a></pre>
+<pre>private static final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1708">DEFAULT_PRIORITY</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../../constant-values.html#org.apache.hadoop.hbase.regionserver.HRegionServer.CompactionChecker.DEFAULT_PRIORITY">Constant Field Values</a></dd>
@@ -264,7 +264,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>iteration</h4>
-<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1701">iteration</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1711">iteration</a></pre>
 </li>
 </ul>
 </li>
@@ -281,7 +281,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompactionChecker</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1703">CompactionChecker</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;h,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1713">CompactionChecker</a>(<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegionServer.html" title="class in org.apache.hadoop.hbase.regionserver">HRegionServer</a>&nbsp;h,
                   int&nbsp;sleepTime,
                   <a href="../../../../../org/apache/hadoop/hbase/Stoppable.html" title="interface in org.apache.hadoop.hbase">Stoppable</a>&nbsp;stopper)</pre>
 </li>
@@ -300,7 +300,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html" tit
 <ul class="blockListLast">
 <li class="blockList">
 <h4>chore</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1717">chore</a>()</pre>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.CompactionChecker.html#line.1727">chore</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/ScheduledChore.html#chore--">ScheduledChore</a></code></span></div>
 <div class="block">The task to execute on each scheduled execution of the Chore</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
index 332c004..234f82d 100644
--- a/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
+++ b/devapidocs/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3387">HRegionServer.MovedRegionInfo</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.html#line.3397">HRegionServer.MovedRegionInfo</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>
@@ -218,7 +218,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>serverName</h4>
-<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3388">serverName</a></pre>
+<pre>private final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3398">serverName</a></pre>
 </li>
 </ul>
 <a name="seqNum">
@@ -227,7 +227,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>seqNum</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3389">seqNum</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3399">seqNum</a></pre>
 </li>
 </ul>
 <a name="ts">
@@ -236,7 +236,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ts</h4>
-<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3390">ts</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3400">ts</a></pre>
 </li>
 </ul>
 </li>
@@ -253,7 +253,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MovedRegionInfo</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3392">MovedRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3402">MovedRegionInfo</a>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                        long&nbsp;closeSeqNum)</pre>
 </li>
 </ul>
@@ -271,7 +271,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerName</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3398">getServerName</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3408">getServerName</a>()</pre>
 </li>
 </ul>
 <a name="getSeqNum--">
@@ -280,7 +280,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSeqNum</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3402">getSeqNum</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3412">getSeqNum</a>()</pre>
 </li>
 </ul>
 <a name="getMoveTime--">
@@ -289,7 +289,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getMoveTime</h4>
-<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3406">getMoveTime</a>()</pre>
+<pre>public&nbsp;long&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/regionserver/HRegionServer.MovedRegionInfo.html#line.3416">getMoveTime</a>()</pre>
 </li>
 </ul>
 </li>


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/apidocs/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/HConstants.html b/apidocs/org/apache/hadoop/hbase/HConstants.html
index e6e2279..f9d5744 100644
--- a/apidocs/org/apache/hadoop/hbase/HConstants.html
+++ b/apidocs/org/apache/hadoop/hbase/HConstants.html
@@ -207,51 +207,69 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="rowColor">
 <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/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></span></code>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+</td>
+</tr>
+<tr 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/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span></code>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+</td>
+</tr>
+<tr class="rowColor">
+<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/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></span></code>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+</td>
+</tr>
+<tr 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/HConstants.html#CLUSTER_DISTRIBUTED">CLUSTER_DISTRIBUTED</a></span></code>
 <div class="block">Cluster is in distributed mode or not</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CLUSTER_ID_DEFAULT">CLUSTER_ID_DEFAULT</a></span></code>
 <div class="block">Default value for cluster ID</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CLUSTER_ID_FILE_NAME">CLUSTER_ID_FILE_NAME</a></span></code>
 <div class="block">name of the file for unique cluster ID</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CLUSTER_IS_LOCAL">CLUSTER_IS_LOCAL</a></span></code>
 <div class="block">Cluster is standalone or pseudo-distributed</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#COMPACTION_KV_MAX">COMPACTION_KV_MAX</a></span></code>
 <div class="block">Parameter name for the maximum batch of KVs to be used in flushes and compactions</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#COMPACTION_KV_MAX_DEFAULT">COMPACTION_KV_MAX_DEFAULT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CONFIGURATION">CONFIGURATION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CORRUPT_DIR_NAME">CORRUPT_DIR_NAME</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_INCLUSION_KEY">CP_HTD_ATTR_INCLUSION_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_KEY_PATTERN">CP_HTD_ATTR_KEY_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -259,7 +277,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -267,7 +285,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_PATTERN">CP_HTD_ATTR_VALUE_PARAM_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -275,7 +293,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -283,7 +301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -291,78 +309,84 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the alternate cipher algorithm for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_CIPHERPROVIDER_CONF_KEY">CRYPTO_CIPHERPROVIDER_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the crypto algorithm provider, a class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_KEY_ALGORITHM_CONF_KEY">CRYPTO_KEY_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the algorithm used for creating jks key, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_KEYPROVIDER_CONF_KEY">CRYPTO_KEYPROVIDER_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the crypto key provider, a class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_KEYPROVIDER_PARAMETERS_KEY">CRYPTO_KEYPROVIDER_PARAMETERS_KEY</a></span></code>
 <div class="block">Configuration key for the crypto key provider parameters</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the alternate master key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_MASTERKEY_NAME_CONF_KEY">CRYPTO_MASTERKEY_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the master key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_WAL_ALGORITHM_CONF_KEY">CRYPTO_WAL_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the algorithm to use when encrypting the WAL, a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_WAL_KEY_NAME_CONF_KEY">CRYPTO_WAL_KEY_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the master WAL encryption key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#DATA_FILE_UMASK_KEY">DATA_FILE_UMASK_KEY</a></span></code>
 <div class="block">File permission umask to use when creating hbase data files</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DAY_IN_SECONDS">DAY_IN_SECONDS</a></span></code>
 <div class="block">Seconds in a day, hour and minute</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_BLOCKSIZE">DEFAULT_BLOCKSIZE</a></span></code>
 <div class="block">Default block size for an HFile.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span></code>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLUSTER_DISTRIBUTED">DEFAULT_CLUSTER_DISTRIBUTED</a></span></code>
@@ -660,21 +684,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr 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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></span></code>
 <div class="block">Default client port that the zookeeper listens on</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></span></code>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </td>
 </tr>
+<tr 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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DELIMITER">DELIMITER</a></span></code>
@@ -2405,13 +2429,69 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="CLIENT_ZOOKEEPER_QUORUM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_QUORUM</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/HConstants.html#line.187">CLIENT_ZOOKEEPER_QUORUM</a></pre>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_QUORUM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="CLIENT_ZOOKEEPER_CLIENT_PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.190">CLIENT_ZOOKEEPER_CLIENT_PORT</a></pre>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_OBSERVER_MODE</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/HConstants.html#line.194">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></pre>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.197">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></pre>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="ZK_CFG_PROPERTY_PREFIX">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_CFG_PROPERTY_PREFIX</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/HConstants.html#line.187">ZK_CFG_PROPERTY_PREFIX</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/HConstants.html#line.200">ZK_CFG_PROPERTY_PREFIX</a></pre>
 <div class="block">Common prefix of ZooKeeper configuration properties</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2425,7 +2505,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_CFG_PROPERTY_PREFIX_LEN</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.190">ZK_CFG_PROPERTY_PREFIX_LEN</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.203">ZK_CFG_PROPERTY_PREFIX_LEN</a></pre>
 </li>
 </ul>
 <a name="CLIENT_PORT_STR">
@@ -2434,7 +2514,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLIENT_PORT_STR</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/HConstants.html#line.197">CLIENT_PORT_STR</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/HConstants.html#line.210">CLIENT_PORT_STR</a></pre>
 <div class="block">The ZK client port key in the ZK properties map. The name reflects the
  fact that this is not an HBase configuration key.</div>
 <dl>
@@ -2449,7 +2529,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.200">ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.213">ZOOKEEPER_CLIENT_PORT</a></pre>
 <div class="block">Parameter name for the client port that the zookeeper listens on</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2457,17 +2537,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="DEFAULT_ZOOKEPER_CLIENT_PORT">
+<a name="DEFAULT_ZOOKEEPER_CLIENT_PORT">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_ZOOKEPER_CLIENT_PORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.204">DEFAULT_ZOOKEPER_CLIENT_PORT</a></pre>
+<h4>DEFAULT_ZOOKEEPER_CLIENT_PORT</h4>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.217">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></pre>
 <div class="block">Default client port that the zookeeper listens on</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT">Constant Field Values</a></dd>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -2477,7 +2557,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.207">ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.220">ZOOKEEPER_ZNODE_PARENT</a></pre>
 <div class="block">Parameter name for the root dir in ZK for this cluster</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2491,7 +2571,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.209">DEFAULT_ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.222">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">Constant Field Values</a></dd>
@@ -2504,7 +2584,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_MAX_CLIENT_CNXNS</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/HConstants.html#line.215">ZOOKEEPER_MAX_CLIENT_CNXNS</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/HConstants.html#line.228">ZOOKEEPER_MAX_CLIENT_CNXNS</a></pre>
 <div class="block">Parameter name for the limit on concurrent client-side zookeeper
  connections</div>
 <dl>
@@ -2519,7 +2599,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_DATA_DIR</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/HConstants.html#line.219">ZOOKEEPER_DATA_DIR</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/HConstants.html#line.232">ZOOKEEPER_DATA_DIR</a></pre>
 <div class="block">Parameter name for the ZK data directory</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2533,7 +2613,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_TICK_TIME</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/HConstants.html#line.223">ZOOKEEPER_TICK_TIME</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/HConstants.html#line.236">ZOOKEEPER_TICK_TIME</a></pre>
 <div class="block">Parameter name for the ZK tick time</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2541,17 +2621,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">
+<a name="DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.227">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></pre>
+<h4>DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</h4>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.240">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></pre>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">Constant Field Values</a></dd>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -2561,7 +2641,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_SESSION_TIMEOUT</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/HConstants.html#line.230">ZK_SESSION_TIMEOUT</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/HConstants.html#line.243">ZK_SESSION_TIMEOUT</a></pre>
 <div class="block">Configuration key for ZooKeeper session timeout</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2575,7 +2655,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_ZK_SESSION_TIMEOUT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.233">DEFAULT_ZK_SESSION_TIMEOUT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.246">DEFAULT_ZK_SESSION_TIMEOUT</a></pre>
 <div class="block">Default value for ZooKeeper session timeout</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2589,7 +2669,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_PORT</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/HConstants.html#line.236">REGIONSERVER_PORT</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/HConstants.html#line.249">REGIONSERVER_PORT</a></pre>
 <div class="block">Parameter name for port region server listens on.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2603,7 +2683,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_REGIONSERVER_PORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.239">DEFAULT_REGIONSERVER_PORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.252">DEFAULT_REGIONSERVER_PORT</a></pre>
 <div class="block">Default port region server listens on.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2617,7 +2697,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_REGIONSERVER_INFOPORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.242">DEFAULT_REGIONSERVER_INFOPORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.255">DEFAULT_REGIONSERVER_INFOPORT</a></pre>
 <div class="block">default port for region server web api</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2631,7 +2711,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_INFO_PORT</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/HConstants.html#line.245">REGIONSERVER_INFO_PORT</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/HConstants.html#line.258">REGIONSERVER_INFO_PORT</a></pre>
 <div class="block">A configuration key for regionserver info port</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2645,7 +2725,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_INFO_PORT_AUTO</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/HConstants.html#line.249">REGIONSERVER_INFO_PORT_AUTO</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/HConstants.html#line.262">REGIONSERVER_INFO_PORT_AUTO</a></pre>
 <div class="block">A flag that enables automatic selection of regionserver info port</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2659,7 +2739,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGION_SERVER_IMPL</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/HConstants.html#line.253">REGION_SERVER_IMPL</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/HConstants.html#line.266">REGION_SERVER_IMPL</a></pre>
 <div class="block">Parameter name for what region server implementation to use.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2673,7 +2753,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_IMPL</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/HConstants.html#line.256">MASTER_IMPL</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/HConstants.html#line.269">MASTER_IMPL</a></pre>
 <div class="block">Parameter name for what master implementation to use.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2687,7 +2767,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>THREAD_WAKE_FREQUENCY</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/HConstants.html#line.259">THREAD_WAKE_FREQUENCY</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/HConstants.html#line.272">THREAD_WAKE_FREQUENCY</a></pre>
 <div class="block">Parameter name for how often threads should wake up</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2701,7 +2781,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_THREAD_WAKE_FREQUENCY</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.262">DEFAULT_THREAD_WAKE_FREQUENCY</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.275">DEFAULT_THREAD_WAKE_FREQUENCY</a></pre>
 <div class="block">Default value for thread wake frequency</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2715,7 +2795,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VERSION_FILE_WRITE_ATTEMPTS</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/HConstants.html#line.265">VERSION_FILE_WRITE_ATTEMPTS</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/HConstants.html#line.278">VERSION_FILE_WRITE_ATTEMPTS</a></pre>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2729,7 +2809,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.268">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.281">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></pre>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2743,7 +2823,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_PERIOD</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/HConstants.html#line.271">MAJOR_COMPACTION_PERIOD</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/HConstants.html#line.284">MAJOR_COMPACTION_PERIOD</a></pre>
 <div class="block">Parameter name and default value for how often a region should perform a major compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2757,7 +2837,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAJOR_COMPACTION_PERIOD</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.272">DEFAULT_MAJOR_COMPACTION_PERIOD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.285">DEFAULT_MAJOR_COMPACTION_PERIOD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD">Constant Field Values</a></dd>
@@ -2770,7 +2850,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_JITTER</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/HConstants.html#line.281">MAJOR_COMPACTION_JITTER</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/HConstants.html#line.294">MAJOR_COMPACTION_JITTER</a></pre>
 <div class="block">Parameter name and default value for major compaction jitter.
  Used as a multiplier applied to <a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAJOR_COMPACTION_PERIOD"><code>MAJOR_COMPACTION_PERIOD</code></a>
  to cause compaction to occur a given amount of time either side of
@@ -2788,7 +2868,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAJOR_COMPACTION_JITTER</h4>
-<pre>public static final&nbsp;float <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.282">DEFAULT_MAJOR_COMPACTION_JITTER</a></pre>
+<pre>public static final&nbsp;float <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.295">DEFAULT_MAJOR_COMPACTION_JITTER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_MAJOR_COMPACTION_JITTER">Constant Field Values</a></dd>
@@ -2801,7 +2881,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTION_KV_MAX</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/HConstants.html#line.285">COMPACTION_KV_MAX</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/HConstants.html#line.298">COMPACTION_KV_MAX</a></pre>
 <div class="block">Parameter name for the maximum batch of KVs to be used in flushes and compactions</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2815,7 +2895,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTION_KV_MAX_DEFAULT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.286">COMPACTION_KV_MAX_DEFAULT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.299">COMPACTION_KV_MAX_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX_DEFAULT">Constant Field Values</a></dd>
@@ -2828,7 +2908,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_DIR</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/HConstants.html#line.289">HBASE_DIR</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/HConstants.html#line.302">HBASE_DIR</a></pre>
 <div class="block">Parameter name for HBase instance root directory</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2842,7 +2922,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_IPC_POOL_TYPE</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/HConstants.html#line.292">HBASE_CLIENT_IPC_POOL_TYPE</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/HConstants.html#line.305">HBASE_CLIENT_IPC_POOL_TYPE</a></pre>
 <div class="block">Parameter name for HBase client IPC pool type</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2856,7 +2936,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_IPC_POOL_SIZE</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/HConstants.html#line.295">HBASE_CLIENT_IPC_POOL_SIZE</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/HConstants.html#line.308">HBASE_CLIENT_IPC_POOL_SIZE</a></pre>
 <div class="block">Parameter name for HBase client IPC pool size</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2870,7 +2950,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_OPERATION_TIMEOUT</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/HConstants.html#line.298">HBASE_CLIENT_OPERATION_TIMEOUT</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/HConstants.html#line.311">HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client operation timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2884,7 +2964,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_OPERATION_TIMEOUT</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/HConstants.html#line.301">HBASE_CLIENT_META_OPERATION_TIMEOUT</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/HConstants.html#line.314">HBASE_CLIENT_META_OPERATION_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client operation timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2898,7 +2978,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.305">DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.318">DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
 <div class="block">Default HBase client operation timeout, which is tantamount to a blocking call</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2912,7 +2992,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</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/HConstants.html#line.308">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</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/HConstants.html#line.321">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client meta replica scan call timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2926,7 +3006,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.312">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.325">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</a></pre>
 <div class="block">Default HBase client meta replica scan call timeout, 1 second</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2940,7 +3020,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_LOGDIR_NAME</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/HConstants.html#line.315">HREGION_LOGDIR_NAME</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/HConstants.html#line.328">HREGION_LOGDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the log directory for a region server</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2954,7 +3034,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLIT_LOGDIR_NAME</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/HConstants.html#line.318">SPLIT_LOGDIR_NAME</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/HConstants.html#line.331">SPLIT_LOGDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the splitlog directory for a region server</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2968,7 +3048,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_OLDLOGDIR_NAME</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/HConstants.html#line.321">HREGION_OLDLOGDIR_NAME</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/HConstants.html#line.334">HREGION_OLDLOGDIR_NAME</a></pre>
 <div class="block">Like the previous, but for old logs that are about to be deleted</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2982,7 +3062,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_STAGING_DIR_NAME</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/HConstants.html#line.324">BULKLOAD_STAGING_DIR_NAME</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/HConstants.html#line.337">BULKLOAD_STAGING_DIR_NAME</a></pre>
 <div class="block">Staging dir used by bulk load</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2996,7 +3076,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CORRUPT_DIR_NAME</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/HConstants.html#line.326">CORRUPT_DIR_NAME</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/HConstants.html#line.339">CORRUPT_DIR_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CORRUPT_DIR_NAME">Constant Field Values</a></dd>
@@ -3009,7 +3089,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBCK_SIDELINEDIR_NAME</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/HConstants.html#line.329">HBCK_SIDELINEDIR_NAME</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/HConstants.html#line.342">HBCK_SIDELINEDIR_NAME</a></pre>
 <div class="block">Used by HBCK to sideline backup data</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3023,7 +3103,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIGRATION_NAME</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/HConstants.html#line.332">MIGRATION_NAME</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/HConstants.html#line.345">MIGRATION_NAME</a></pre>
 <div class="block">Any artifacts left from migration can be moved here</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3037,7 +3117,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_COMPACTIONDIR_NAME</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/HConstants.html#line.335">HREGION_COMPACTIONDIR_NAME</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/HConstants.html#line.348">HREGION_COMPACTIONDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the compaction directory during compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3051,7 +3131,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MAX_FILESIZE</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/HConstants.html#line.338">HREGION_MAX_FILESIZE</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/HConstants.html#line.351">HREGION_MAX_FILESIZE</a></pre>
 <div class="block">Conf key for the max file size after which we split the region</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3065,7 +3145,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAX_FILE_SIZE</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.342">DEFAULT_MAX_FILE_SIZE</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.355">DEFAULT_MAX_FILE_SIZE</a></pre>
 <div class="block">Default maximum file size</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3079,7 +3159,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_MAX_ROWSIZE_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/HConstants.html#line.347">TABLE_MAX_ROWSIZE_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/HConstants.html#line.360">TABLE_MAX_ROWSIZE_KEY</a></pre>
 <div class="block">Max size of single row for Get's or Scan's without in-row scanning flag set.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3093,7 +3173,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_MAX_ROWSIZE_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.352">TABLE_MAX_ROWSIZE_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.365">TABLE_MAX_ROWSIZE_DEFAULT</a></pre>
 <div class="block">Default max row size (1 Gb).</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3107,7 +3187,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HSTORE_OPEN_AND_CLOSE_THREADS_MAX</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/HConstants.html#line.358">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</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/HConstants.html#line.371">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
 <div class="block">The max number of threads used for opening and closing stores or store
  files in parallel</div>
 <dl>
@@ -3122,7 +3202,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.365">DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.378">DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
 <div class="block">The default number for the max number of threads used for opening and
  closing stores or store files in parallel</div>
 <dl>
@@ -3137,7 +3217,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MEMSTORE_BLOCK_MULTIPLIER</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/HConstants.html#line.372">HREGION_MEMSTORE_BLOCK_MULTIPLIER</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/HConstants.html#line.385">HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
 <div class="block">Block updates if memstore has hbase.hregion.memstore.block.multiplier
  times hbase.hregion.memstore.flush.size bytes.  Useful preventing
  runaway memstore during spikes in update traffic.</div>
@@ -3153,7 +3233,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.378">DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.391">DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
 <div class="block">Default value for hbase.hregion.memstore.block.multiplier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3167,7 +3247,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MEMSTORE_FLUSH_SIZE</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/HConstants.html#line.381">HREGION_MEMSTORE_FLUSH_SIZE</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/HConstants.html#line.394">HREGION_MEMSTORE_FLUSH_SIZE</a></pre>
 <div class="block">Conf key for the memstore size at which we flush the memstore</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3181,7 +3261,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_EDITS_REPLAY_SKIP_ERRORS</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/HConstants.html#line.384">HREGION_EDITS_REPLAY_SKIP_ERRORS</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/HConstants.html#line.397">HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS">Constant Field Values</a></dd>
@@ -3194,7 +3274,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.387">DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.400">DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS">Constant Field Values</a></dd>
@@ -3207,7 +3287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAXIMUM_VALUE_LENGTH</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.391">MAXIMUM_VALUE_LENGTH</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.404">MAXIMUM_VALUE_LENGTH</a></pre>
 <div class="block">Maximum value length, enforced on KeyValue construction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3221,7 +3301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_ID_FILE_NAME</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/HConstants.html#line.394">CLUSTER_ID_FILE_NAME</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/HConstants.html#line.407">CLUSTER_ID_FILE_NAME</a></pre>
 <div class="block">name of the file for unique cluster ID</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3235,7 +3315,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_ID_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.397">CLUSTER_ID_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.410">CLUSTER_ID_DEFAULT</a></pre>
 <div class="block">Default value for cluster ID</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3249,7 +3329,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEEP_SEQID_PERIOD</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/HConstants.html#line.400">KEEP_SEQID_PERIOD</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/HConstants.html#line.413">KEEP_SEQID_PERIOD</a></pre>
 <div class="block">Parameter name for # days to keep MVCC values during a major compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3263,7 +3343,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIN_KEEP_SEQID_PERIOD</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.402">MIN_KEEP_SEQID_PERIOD</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.415">MIN_KEEP_SEQID_PERIOD</a></pre>
 <div class="block">At least to keep MVCC values in hfiles for 5 days</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3277,7 +3357,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BASE_NAMESPACE_DIR</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/HConstants.html#line.424">BASE_NAMESPACE_DIR</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/HConstants.html#line.437">BASE_NAMESPACE_DIR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.BASE_NAMESPACE_DIR">Constant Field Values</a></dd>
@@ -3290,7 +3370,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_ROW_DELIMITER</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.427">META_ROW_DELIMITER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.440">META_ROW_DELIMITER</a></pre>
 <div class="block">delimiter used between portions of a region name</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3304,7 +3384,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CATALOG_FAMILY_STR</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/HConstants.html#line.430">CATALOG_FAMILY_STR</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/HConstants.html#line.443">CATALOG_FAMILY_STR</a></pre>
 <div class="block">The catalog family as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3318,7 +3398,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CATALOG_FAMILY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.433">CATALOG_FAMILY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.446">CATALOG_FAMILY</a></pre>
 <div class="block">The catalog family</div>
 </li>
 </ul>
@@ -3328,7 +3408,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONINFO_QUALIFIER_STR</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/HConstants.html#line.436">REGIONINFO_QUALIFIER_STR</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/HConstants.html#line.449">REGIONINFO_QUALIFIER_STR</a></pre>
 <div class="block">The RegionInfo qualifier as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3342,7 +3422,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONINFO_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.439">REGIONINFO_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.452">REGIONINFO_QUALIFIER</a></pre>
 <div class="block">The regioninfo column qualifier</div>
 </li>
 </ul>
@@ -3352,7 +3432,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_QUALIFIER_STR</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/HConstants.html#line.442">SERVER_QUALIFIER_STR</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/HConstants.html#line.455">SERVER_QUALIFIER_STR</a></pre>
 <div class="block">The server column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3366,7 +3446,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.444">SERVER_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.457">SERVER_QUALIFIER</a></pre>
 <div class="block">The server column qualifier</div>
 </li>
 </ul>
@@ -3376,7 +3456,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STARTCODE_QUALIFIER_STR</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/HConstants.html#line.447">STARTCODE_QUALIFIER_STR</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/HConstants.html#line.460">STARTCODE_QUALIFIER_STR</a></pre>
 <div class="block">The startcode column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3390,7 +3470,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STARTCODE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.449">STARTCODE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.462">STARTCODE_QUALIFIER</a></pre>
 <div class="block">The startcode column qualifier</div>
 </li>
 </ul>
@@ -3400,7 +3480,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SEQNUM_QUALIFIER_STR</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/HConstants.html#line.452">SEQNUM_QUALIFIER_STR</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/HConstants.html#line.465">SEQNUM_QUALIFIER_STR</a></pre>
 <div class="block">The open seqnum column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3414,7 +3494,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SEQNUM_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.454">SEQNUM_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.467">SEQNUM_QUALIFIER</a></pre>
 <div class="block">The open seqnum column qualifier</div>
 </li>
 </ul>
@@ -3424,7 +3504,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STATE_QUALIFIER_STR</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/HConstants.html#line.457">STATE_QUALIFIER_STR</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/HConstants.html#line.470">STATE_QUALIFIER_STR</a></pre>
 <div class="block">The state column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3438,7 +3518,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STATE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.459">STATE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.472">STATE_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="SERVERNAME_QUALIFIER_STR">
@@ -3447,7 +3527,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVERNAME_QUALIFIER_STR</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/HConstants.html#line.466">SERVERNAME_QUALIFIER_STR</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/HConstants.html#line.479">SERVERNAME_QUALIFIER_STR</a></pre>
 <div class="block">The serverName column qualifier. Its the server where the region is
  transitioning on, while column server is the server where the region is
  opened on. They are the same when the region is in state OPEN.</div>
@@ -3463,7 +3543,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVERNAME_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.468">SERVERNAME_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.481">SERVERNAME_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="SPLITA_QUALIFIER">
@@ -3472,7 +3552,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLITA_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.471">SPLITA_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.484">SPLITA_QUALIFIER</a></pre>
 <div class="block">The lower-half split region column qualifier</div>
 </li>
 </ul>
@@ -3482,7 +3562,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLITB_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.474">SPLITB_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.487">SPLITB_QUALIFIER</a></pre>
 <div class="block">The upper-half split region column qualifier</div>
 </li>
 </ul>
@@ -3492,7 +3572,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MERGEA_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.477">MERGEA_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.490">MERGEA_QUALIFIER</a></pre>
 <div class="block">The lower-half merge region column qualifier</div>
 </li>
 </ul>
@@ -3502,7 +3582,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MERGEB_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.480">MERGEB_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.493">MERGEB_QUALIFIER</a></pre>
 <div class="block">The upper-half merge region column qualifier</div>
 </li>
 </ul>
@@ -3512,7 +3592,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_FAMILY_STR</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/HConstants.html#line.483">TABLE_FAMILY_STR</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/HConstants.html#line.496">TABLE_FAMILY_STR</a></pre>
 <div class="block">The catalog family as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3526,7 +3606,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_FAMILY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.486">TABLE_FAMILY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.499">TABLE_FAMILY</a></pre>
 <div class="block">The catalog family</div>
 </li>
 </ul>
@@ -3536,7 +3616,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_STATE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.489">TABLE_STATE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.502">TABLE_STATE_QUALIFIER</a></pre>
 <div class="block">The serialized table state qualifier</div>
 </li>
 </ul>
@@ -3546,7 +3626,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REPLICATION_BARRIER_FAMILY_STR</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/HConstants.html#line.492">REPLICATION_BARRIER_FAMILY_STR</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.or

<TRUNCATED>

[36/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/org/apache/hadoop/hbase/HConstants.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/HConstants.html b/devapidocs/org/apache/hadoop/hbase/HConstants.html
index 246c31a..67cc119 100644
--- a/devapidocs/org/apache/hadoop/hbase/HConstants.html
+++ b/devapidocs/org/apache/hadoop/hbase/HConstants.html
@@ -228,51 +228,69 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </tr>
 <tr class="rowColor">
 <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/HConstants.html#CLIENT_ZOOKEEPER_CLIENT_PORT">CLIENT_ZOOKEEPER_CLIENT_PORT</a></span></code>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+</td>
+</tr>
+<tr 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/HConstants.html#CLIENT_ZOOKEEPER_OBSERVER_MODE">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span></code>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+</td>
+</tr>
+<tr class="rowColor">
+<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/HConstants.html#CLIENT_ZOOKEEPER_QUORUM">CLIENT_ZOOKEEPER_QUORUM</a></span></code>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+</td>
+</tr>
+<tr 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/HConstants.html#CLUSTER_DISTRIBUTED">CLUSTER_DISTRIBUTED</a></span></code>
 <div class="block">Cluster is in distributed mode or not</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CLUSTER_ID_DEFAULT">CLUSTER_ID_DEFAULT</a></span></code>
 <div class="block">Default value for cluster ID</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CLUSTER_ID_FILE_NAME">CLUSTER_ID_FILE_NAME</a></span></code>
 <div class="block">name of the file for unique cluster ID</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CLUSTER_IS_LOCAL">CLUSTER_IS_LOCAL</a></span></code>
 <div class="block">Cluster is standalone or pseudo-distributed</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#COMPACTION_KV_MAX">COMPACTION_KV_MAX</a></span></code>
 <div class="block">Parameter name for the maximum batch of KVs to be used in flushes and compactions</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#COMPACTION_KV_MAX_DEFAULT">COMPACTION_KV_MAX_DEFAULT</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CONFIGURATION">CONFIGURATION</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CORRUPT_DIR_NAME">CORRUPT_DIR_NAME</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_INCLUSION_KEY">CP_HTD_ATTR_INCLUSION_KEY</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_KEY_PATTERN">CP_HTD_ATTR_KEY_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -280,7 +298,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN">CP_HTD_ATTR_VALUE_PARAM_KEY_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -288,7 +306,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_PATTERN">CP_HTD_ATTR_VALUE_PARAM_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -296,7 +314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PARAM_VALUE_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -304,7 +322,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static <a href="https://docs.oracle.com/javase/8/docs/api/java/util/regex/Pattern.html?is-external=true" title="class or interface in java.util.regex">Pattern</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#CP_HTD_ATTR_VALUE_PATTERN">CP_HTD_ATTR_VALUE_PATTERN</a></span></code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -312,78 +330,84 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY">CRYPTO_ALTERNATE_KEY_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the alternate cipher algorithm for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_CIPHERPROVIDER_CONF_KEY">CRYPTO_CIPHERPROVIDER_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the crypto algorithm provider, a class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_KEY_ALGORITHM_CONF_KEY">CRYPTO_KEY_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the algorithm used for creating jks key, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_KEYPROVIDER_CONF_KEY">CRYPTO_KEYPROVIDER_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the crypto key provider, a class name</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_KEYPROVIDER_PARAMETERS_KEY">CRYPTO_KEYPROVIDER_PARAMETERS_KEY</a></span></code>
 <div class="block">Configuration key for the crypto key provider parameters</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY">CRYPTO_MASTERKEY_ALTERNATE_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the alternate master key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_MASTERKEY_NAME_CONF_KEY">CRYPTO_MASTERKEY_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the master key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#CRYPTO_WAL_ALGORITHM_CONF_KEY">CRYPTO_WAL_ALGORITHM_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the algorithm to use when encrypting the WAL, a string</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr 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/HConstants.html#CRYPTO_WAL_KEY_NAME_CONF_KEY">CRYPTO_WAL_KEY_NAME_CONF_KEY</a></span></code>
 <div class="block">Configuration key for the name of the master WAL encryption key for the cluster, a string</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <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/HConstants.html#DATA_FILE_UMASK_KEY">DATA_FILE_UMASK_KEY</a></span></code>
 <div class="block">File permission umask to use when creating hbase data files</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DAY_IN_SECONDS">DAY_IN_SECONDS</a></span></code>
 <div class="block">Seconds in a day, hour and minute</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_BLOCKSIZE">DEFAULT_BLOCKSIZE</a></span></code>
 <div class="block">Default block size for an HFile.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code>static boolean</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></span></code>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_CLUSTER_DISTRIBUTED">DEFAULT_CLUSTER_DISTRIBUTED</a></span></code>
@@ -681,21 +705,21 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </td>
 </tr>
 <tr 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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span></code>&nbsp;</td>
-</tr>
-<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_CLIENT_PORT">DEFAULT_ZOOKEPER_CLIENT_PORT</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_CLIENT_PORT">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></span></code>
 <div class="block">Default client port that the zookeeper listens on</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></span></code>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></span></code>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 </td>
 </tr>
+<tr 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/HConstants.html#DEFAULT_ZOOKEEPER_ZNODE_PARENT">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></span></code>&nbsp;</td>
+</tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/hadoop/hbase/HConstants.html#DELIMITER">DELIMITER</a></span></code>
@@ -2445,13 +2469,69 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="CLIENT_ZOOKEEPER_QUORUM">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_QUORUM</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/HConstants.html#line.187">CLIENT_ZOOKEEPER_QUORUM</a></pre>
+<div class="block">Name of ZooKeeper quorum configuration parameter for client to locate meta.</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_QUORUM">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="CLIENT_ZOOKEEPER_CLIENT_PORT">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.190">CLIENT_ZOOKEEPER_CLIENT_PORT</a></pre>
+<div class="block">Client port of ZooKeeper for client to locate meta</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_CLIENT_PORT">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLIENT_ZOOKEEPER_OBSERVER_MODE</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/HConstants.html#line.194">CLIENT_ZOOKEEPER_OBSERVER_MODE</a></pre>
+<div class="block">Indicate whether the client ZK are observer nodes of the server ZK</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
+<a name="DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</h4>
+<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.197">DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE</a></pre>
+<div class="block">Assuming client zk not in observer mode and master need to synchronize information</div>
+<dl>
+<dt><span class="seeLabel">See Also:</span></dt>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE">Constant Field Values</a></dd>
+</dl>
+</li>
+</ul>
 <a name="ZK_CFG_PROPERTY_PREFIX">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_CFG_PROPERTY_PREFIX</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/HConstants.html#line.187">ZK_CFG_PROPERTY_PREFIX</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/HConstants.html#line.200">ZK_CFG_PROPERTY_PREFIX</a></pre>
 <div class="block">Common prefix of ZooKeeper configuration properties</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2465,7 +2545,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_CFG_PROPERTY_PREFIX_LEN</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.190">ZK_CFG_PROPERTY_PREFIX_LEN</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.203">ZK_CFG_PROPERTY_PREFIX_LEN</a></pre>
 </li>
 </ul>
 <a name="CLIENT_PORT_STR">
@@ -2474,7 +2554,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLIENT_PORT_STR</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/HConstants.html#line.197">CLIENT_PORT_STR</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/HConstants.html#line.210">CLIENT_PORT_STR</a></pre>
 <div class="block">The ZK client port key in the ZK properties map. The name reflects the
  fact that this is not an HBase configuration key.</div>
 <dl>
@@ -2489,7 +2569,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.200">ZOOKEEPER_CLIENT_PORT</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/HConstants.html#line.213">ZOOKEEPER_CLIENT_PORT</a></pre>
 <div class="block">Parameter name for the client port that the zookeeper listens on</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2497,17 +2577,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="DEFAULT_ZOOKEPER_CLIENT_PORT">
+<a name="DEFAULT_ZOOKEEPER_CLIENT_PORT">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_ZOOKEPER_CLIENT_PORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.204">DEFAULT_ZOOKEPER_CLIENT_PORT</a></pre>
+<h4>DEFAULT_ZOOKEEPER_CLIENT_PORT</h4>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.217">DEFAULT_ZOOKEEPER_CLIENT_PORT</a></pre>
 <div class="block">Default client port that the zookeeper listens on</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_CLIENT_PORT">Constant Field Values</a></dd>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_CLIENT_PORT">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -2517,7 +2597,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.207">ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.220">ZOOKEEPER_ZNODE_PARENT</a></pre>
 <div class="block">Parameter name for the root dir in ZK for this cluster</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2531,7 +2611,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.209">DEFAULT_ZOOKEEPER_ZNODE_PARENT</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/HConstants.html#line.222">DEFAULT_ZOOKEEPER_ZNODE_PARENT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_ZNODE_PARENT">Constant Field Values</a></dd>
@@ -2544,7 +2624,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_MAX_CLIENT_CNXNS</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/HConstants.html#line.215">ZOOKEEPER_MAX_CLIENT_CNXNS</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/HConstants.html#line.228">ZOOKEEPER_MAX_CLIENT_CNXNS</a></pre>
 <div class="block">Parameter name for the limit on concurrent client-side zookeeper
  connections</div>
 <dl>
@@ -2559,7 +2639,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_DATA_DIR</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/HConstants.html#line.219">ZOOKEEPER_DATA_DIR</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/HConstants.html#line.232">ZOOKEEPER_DATA_DIR</a></pre>
 <div class="block">Parameter name for the ZK data directory</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2573,7 +2653,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZOOKEEPER_TICK_TIME</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/HConstants.html#line.223">ZOOKEEPER_TICK_TIME</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/HConstants.html#line.236">ZOOKEEPER_TICK_TIME</a></pre>
 <div class="block">Parameter name for the ZK tick time</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2581,17 +2661,17 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">
+<a name="DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
-<h4>DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.227">DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS</a></pre>
+<h4>DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</h4>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.240">DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS</a></pre>
 <div class="block">Default limit on concurrent client-side zookeeper connections</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
-<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEPER_MAX_CLIENT_CNXNS">Constant Field Values</a></dd>
+<dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_ZOOKEEPER_MAX_CLIENT_CNXNS">Constant Field Values</a></dd>
 </dl>
 </li>
 </ul>
@@ -2601,7 +2681,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>ZK_SESSION_TIMEOUT</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/HConstants.html#line.230">ZK_SESSION_TIMEOUT</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/HConstants.html#line.243">ZK_SESSION_TIMEOUT</a></pre>
 <div class="block">Configuration key for ZooKeeper session timeout</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2615,7 +2695,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_ZK_SESSION_TIMEOUT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.233">DEFAULT_ZK_SESSION_TIMEOUT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.246">DEFAULT_ZK_SESSION_TIMEOUT</a></pre>
 <div class="block">Default value for ZooKeeper session timeout</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2629,7 +2709,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_PORT</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/HConstants.html#line.236">REGIONSERVER_PORT</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/HConstants.html#line.249">REGIONSERVER_PORT</a></pre>
 <div class="block">Parameter name for port region server listens on.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2643,7 +2723,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_REGIONSERVER_PORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.239">DEFAULT_REGIONSERVER_PORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.252">DEFAULT_REGIONSERVER_PORT</a></pre>
 <div class="block">Default port region server listens on.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2657,7 +2737,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_REGIONSERVER_INFOPORT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.242">DEFAULT_REGIONSERVER_INFOPORT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.255">DEFAULT_REGIONSERVER_INFOPORT</a></pre>
 <div class="block">default port for region server web api</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2671,7 +2751,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_INFO_PORT</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/HConstants.html#line.245">REGIONSERVER_INFO_PORT</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/HConstants.html#line.258">REGIONSERVER_INFO_PORT</a></pre>
 <div class="block">A configuration key for regionserver info port</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2685,7 +2765,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONSERVER_INFO_PORT_AUTO</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/HConstants.html#line.249">REGIONSERVER_INFO_PORT_AUTO</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/HConstants.html#line.262">REGIONSERVER_INFO_PORT_AUTO</a></pre>
 <div class="block">A flag that enables automatic selection of regionserver info port</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2699,7 +2779,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGION_SERVER_IMPL</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/HConstants.html#line.253">REGION_SERVER_IMPL</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/HConstants.html#line.266">REGION_SERVER_IMPL</a></pre>
 <div class="block">Parameter name for what region server implementation to use.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2713,7 +2793,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MASTER_IMPL</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/HConstants.html#line.256">MASTER_IMPL</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/HConstants.html#line.269">MASTER_IMPL</a></pre>
 <div class="block">Parameter name for what master implementation to use.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2727,7 +2807,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>THREAD_WAKE_FREQUENCY</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/HConstants.html#line.259">THREAD_WAKE_FREQUENCY</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/HConstants.html#line.272">THREAD_WAKE_FREQUENCY</a></pre>
 <div class="block">Parameter name for how often threads should wake up</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2741,7 +2821,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_THREAD_WAKE_FREQUENCY</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.262">DEFAULT_THREAD_WAKE_FREQUENCY</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.275">DEFAULT_THREAD_WAKE_FREQUENCY</a></pre>
 <div class="block">Default value for thread wake frequency</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2755,7 +2835,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>VERSION_FILE_WRITE_ATTEMPTS</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/HConstants.html#line.265">VERSION_FILE_WRITE_ATTEMPTS</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/HConstants.html#line.278">VERSION_FILE_WRITE_ATTEMPTS</a></pre>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2769,7 +2849,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.268">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.281">DEFAULT_VERSION_FILE_WRITE_ATTEMPTS</a></pre>
 <div class="block">Parameter name for how often we should try to write a version file, before failing</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2783,7 +2863,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_PERIOD</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/HConstants.html#line.271">MAJOR_COMPACTION_PERIOD</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/HConstants.html#line.284">MAJOR_COMPACTION_PERIOD</a></pre>
 <div class="block">Parameter name and default value for how often a region should perform a major compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2797,7 +2877,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAJOR_COMPACTION_PERIOD</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.272">DEFAULT_MAJOR_COMPACTION_PERIOD</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.285">DEFAULT_MAJOR_COMPACTION_PERIOD</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_MAJOR_COMPACTION_PERIOD">Constant Field Values</a></dd>
@@ -2810,7 +2890,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAJOR_COMPACTION_JITTER</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/HConstants.html#line.281">MAJOR_COMPACTION_JITTER</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/HConstants.html#line.294">MAJOR_COMPACTION_JITTER</a></pre>
 <div class="block">Parameter name and default value for major compaction jitter.
  Used as a multiplier applied to <a href="../../../../org/apache/hadoop/hbase/HConstants.html#MAJOR_COMPACTION_PERIOD"><code>MAJOR_COMPACTION_PERIOD</code></a>
  to cause compaction to occur a given amount of time either side of
@@ -2828,7 +2908,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAJOR_COMPACTION_JITTER</h4>
-<pre>public static final&nbsp;float <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.282">DEFAULT_MAJOR_COMPACTION_JITTER</a></pre>
+<pre>public static final&nbsp;float <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.295">DEFAULT_MAJOR_COMPACTION_JITTER</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_MAJOR_COMPACTION_JITTER">Constant Field Values</a></dd>
@@ -2841,7 +2921,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTION_KV_MAX</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/HConstants.html#line.285">COMPACTION_KV_MAX</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/HConstants.html#line.298">COMPACTION_KV_MAX</a></pre>
 <div class="block">Parameter name for the maximum batch of KVs to be used in flushes and compactions</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2855,7 +2935,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>COMPACTION_KV_MAX_DEFAULT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.286">COMPACTION_KV_MAX_DEFAULT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.299">COMPACTION_KV_MAX_DEFAULT</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.COMPACTION_KV_MAX_DEFAULT">Constant Field Values</a></dd>
@@ -2868,7 +2948,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_DIR</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/HConstants.html#line.289">HBASE_DIR</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/HConstants.html#line.302">HBASE_DIR</a></pre>
 <div class="block">Parameter name for HBase instance root directory</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2882,7 +2962,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_IPC_POOL_TYPE</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/HConstants.html#line.292">HBASE_CLIENT_IPC_POOL_TYPE</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/HConstants.html#line.305">HBASE_CLIENT_IPC_POOL_TYPE</a></pre>
 <div class="block">Parameter name for HBase client IPC pool type</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2896,7 +2976,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_IPC_POOL_SIZE</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/HConstants.html#line.295">HBASE_CLIENT_IPC_POOL_SIZE</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/HConstants.html#line.308">HBASE_CLIENT_IPC_POOL_SIZE</a></pre>
 <div class="block">Parameter name for HBase client IPC pool size</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2910,7 +2990,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_OPERATION_TIMEOUT</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/HConstants.html#line.298">HBASE_CLIENT_OPERATION_TIMEOUT</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/HConstants.html#line.311">HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client operation timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2924,7 +3004,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_OPERATION_TIMEOUT</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/HConstants.html#line.301">HBASE_CLIENT_META_OPERATION_TIMEOUT</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/HConstants.html#line.314">HBASE_CLIENT_META_OPERATION_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client operation timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2938,7 +3018,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.305">DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.318">DEFAULT_HBASE_CLIENT_OPERATION_TIMEOUT</a></pre>
 <div class="block">Default HBase client operation timeout, which is tantamount to a blocking call</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2952,7 +3032,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</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/HConstants.html#line.308">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</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/HConstants.html#line.321">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT</a></pre>
 <div class="block">Parameter name for HBase client meta replica scan call timeout.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2966,7 +3046,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.312">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.325">HBASE_CLIENT_META_REPLICA_SCAN_TIMEOUT_DEFAULT</a></pre>
 <div class="block">Default HBase client meta replica scan call timeout, 1 second</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2980,7 +3060,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_LOGDIR_NAME</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/HConstants.html#line.315">HREGION_LOGDIR_NAME</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/HConstants.html#line.328">HREGION_LOGDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the log directory for a region server</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -2994,7 +3074,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLIT_LOGDIR_NAME</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/HConstants.html#line.318">SPLIT_LOGDIR_NAME</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/HConstants.html#line.331">SPLIT_LOGDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the splitlog directory for a region server</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3008,7 +3088,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_OLDLOGDIR_NAME</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/HConstants.html#line.321">HREGION_OLDLOGDIR_NAME</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/HConstants.html#line.334">HREGION_OLDLOGDIR_NAME</a></pre>
 <div class="block">Like the previous, but for old logs that are about to be deleted</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3022,7 +3102,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BULKLOAD_STAGING_DIR_NAME</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/HConstants.html#line.324">BULKLOAD_STAGING_DIR_NAME</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/HConstants.html#line.337">BULKLOAD_STAGING_DIR_NAME</a></pre>
 <div class="block">Staging dir used by bulk load</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3036,7 +3116,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CORRUPT_DIR_NAME</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/HConstants.html#line.326">CORRUPT_DIR_NAME</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/HConstants.html#line.339">CORRUPT_DIR_NAME</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.CORRUPT_DIR_NAME">Constant Field Values</a></dd>
@@ -3049,7 +3129,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HBCK_SIDELINEDIR_NAME</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/HConstants.html#line.329">HBCK_SIDELINEDIR_NAME</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/HConstants.html#line.342">HBCK_SIDELINEDIR_NAME</a></pre>
 <div class="block">Used by HBCK to sideline backup data</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3063,7 +3143,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIGRATION_NAME</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/HConstants.html#line.332">MIGRATION_NAME</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/HConstants.html#line.345">MIGRATION_NAME</a></pre>
 <div class="block">Any artifacts left from migration can be moved here</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3077,7 +3157,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_COMPACTIONDIR_NAME</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/HConstants.html#line.335">HREGION_COMPACTIONDIR_NAME</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/HConstants.html#line.348">HREGION_COMPACTIONDIR_NAME</a></pre>
 <div class="block">Used to construct the name of the compaction directory during compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3091,7 +3171,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MAX_FILESIZE</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/HConstants.html#line.338">HREGION_MAX_FILESIZE</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/HConstants.html#line.351">HREGION_MAX_FILESIZE</a></pre>
 <div class="block">Conf key for the max file size after which we split the region</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3105,7 +3185,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_MAX_FILE_SIZE</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.342">DEFAULT_MAX_FILE_SIZE</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.355">DEFAULT_MAX_FILE_SIZE</a></pre>
 <div class="block">Default maximum file size</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3119,7 +3199,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_MAX_ROWSIZE_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/HConstants.html#line.347">TABLE_MAX_ROWSIZE_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/HConstants.html#line.360">TABLE_MAX_ROWSIZE_KEY</a></pre>
 <div class="block">Max size of single row for Get's or Scan's without in-row scanning flag set.</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3133,7 +3213,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_MAX_ROWSIZE_DEFAULT</h4>
-<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.352">TABLE_MAX_ROWSIZE_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.365">TABLE_MAX_ROWSIZE_DEFAULT</a></pre>
 <div class="block">Default max row size (1 Gb).</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3147,7 +3227,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HSTORE_OPEN_AND_CLOSE_THREADS_MAX</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/HConstants.html#line.358">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</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/HConstants.html#line.371">HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
 <div class="block">The max number of threads used for opening and closing stores or store
  files in parallel</div>
 <dl>
@@ -3162,7 +3242,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.365">DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.378">DEFAULT_HSTORE_OPEN_AND_CLOSE_THREADS_MAX</a></pre>
 <div class="block">The default number for the max number of threads used for opening and
  closing stores or store files in parallel</div>
 <dl>
@@ -3177,7 +3257,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MEMSTORE_BLOCK_MULTIPLIER</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/HConstants.html#line.372">HREGION_MEMSTORE_BLOCK_MULTIPLIER</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/HConstants.html#line.385">HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
 <div class="block">Block updates if memstore has hbase.hregion.memstore.block.multiplier
  times hbase.hregion.memstore.flush.size bytes.  Useful preventing
  runaway memstore during spikes in update traffic.</div>
@@ -3193,7 +3273,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.378">DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.391">DEFAULT_HREGION_MEMSTORE_BLOCK_MULTIPLIER</a></pre>
 <div class="block">Default value for hbase.hregion.memstore.block.multiplier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3207,7 +3287,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_MEMSTORE_FLUSH_SIZE</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/HConstants.html#line.381">HREGION_MEMSTORE_FLUSH_SIZE</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/HConstants.html#line.394">HREGION_MEMSTORE_FLUSH_SIZE</a></pre>
 <div class="block">Conf key for the memstore size at which we flush the memstore</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3221,7 +3301,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>HREGION_EDITS_REPLAY_SKIP_ERRORS</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/HConstants.html#line.384">HREGION_EDITS_REPLAY_SKIP_ERRORS</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/HConstants.html#line.397">HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.HREGION_EDITS_REPLAY_SKIP_ERRORS">Constant Field Values</a></dd>
@@ -3234,7 +3314,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</h4>
-<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.387">DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.400">DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.DEFAULT_HREGION_EDITS_REPLAY_SKIP_ERRORS">Constant Field Values</a></dd>
@@ -3247,7 +3327,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MAXIMUM_VALUE_LENGTH</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.391">MAXIMUM_VALUE_LENGTH</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.404">MAXIMUM_VALUE_LENGTH</a></pre>
 <div class="block">Maximum value length, enforced on KeyValue construction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3261,7 +3341,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_ID_FILE_NAME</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/HConstants.html#line.394">CLUSTER_ID_FILE_NAME</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/HConstants.html#line.407">CLUSTER_ID_FILE_NAME</a></pre>
 <div class="block">name of the file for unique cluster ID</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3275,7 +3355,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CLUSTER_ID_DEFAULT</h4>
-<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.397">CLUSTER_ID_DEFAULT</a></pre>
+<pre>public static final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a> <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.410">CLUSTER_ID_DEFAULT</a></pre>
 <div class="block">Default value for cluster ID</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3289,7 +3369,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>KEEP_SEQID_PERIOD</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/HConstants.html#line.400">KEEP_SEQID_PERIOD</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/HConstants.html#line.413">KEEP_SEQID_PERIOD</a></pre>
 <div class="block">Parameter name for # days to keep MVCC values during a major compaction</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3303,7 +3383,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MIN_KEEP_SEQID_PERIOD</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.402">MIN_KEEP_SEQID_PERIOD</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.415">MIN_KEEP_SEQID_PERIOD</a></pre>
 <div class="block">At least to keep MVCC values in hfiles for 5 days</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3317,7 +3397,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>BASE_NAMESPACE_DIR</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/HConstants.html#line.424">BASE_NAMESPACE_DIR</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/HConstants.html#line.437">BASE_NAMESPACE_DIR</a></pre>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
 <dd><a href="../../../../constant-values.html#org.apache.hadoop.hbase.HConstants.BASE_NAMESPACE_DIR">Constant Field Values</a></dd>
@@ -3330,7 +3410,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>META_ROW_DELIMITER</h4>
-<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.427">META_ROW_DELIMITER</a></pre>
+<pre>public static final&nbsp;int <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.440">META_ROW_DELIMITER</a></pre>
 <div class="block">delimiter used between portions of a region name</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3344,7 +3424,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CATALOG_FAMILY_STR</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/HConstants.html#line.430">CATALOG_FAMILY_STR</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/HConstants.html#line.443">CATALOG_FAMILY_STR</a></pre>
 <div class="block">The catalog family as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3358,7 +3438,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>CATALOG_FAMILY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.433">CATALOG_FAMILY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.446">CATALOG_FAMILY</a></pre>
 <div class="block">The catalog family</div>
 </li>
 </ul>
@@ -3368,7 +3448,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONINFO_QUALIFIER_STR</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/HConstants.html#line.436">REGIONINFO_QUALIFIER_STR</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/HConstants.html#line.449">REGIONINFO_QUALIFIER_STR</a></pre>
 <div class="block">The RegionInfo qualifier as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3382,7 +3462,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REGIONINFO_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.439">REGIONINFO_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.452">REGIONINFO_QUALIFIER</a></pre>
 <div class="block">The regioninfo column qualifier</div>
 </li>
 </ul>
@@ -3392,7 +3472,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_QUALIFIER_STR</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/HConstants.html#line.442">SERVER_QUALIFIER_STR</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/HConstants.html#line.455">SERVER_QUALIFIER_STR</a></pre>
 <div class="block">The server column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3406,7 +3486,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVER_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.444">SERVER_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.457">SERVER_QUALIFIER</a></pre>
 <div class="block">The server column qualifier</div>
 </li>
 </ul>
@@ -3416,7 +3496,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STARTCODE_QUALIFIER_STR</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/HConstants.html#line.447">STARTCODE_QUALIFIER_STR</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/HConstants.html#line.460">STARTCODE_QUALIFIER_STR</a></pre>
 <div class="block">The startcode column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3430,7 +3510,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STARTCODE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.449">STARTCODE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.462">STARTCODE_QUALIFIER</a></pre>
 <div class="block">The startcode column qualifier</div>
 </li>
 </ul>
@@ -3440,7 +3520,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SEQNUM_QUALIFIER_STR</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/HConstants.html#line.452">SEQNUM_QUALIFIER_STR</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/HConstants.html#line.465">SEQNUM_QUALIFIER_STR</a></pre>
 <div class="block">The open seqnum column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3454,7 +3534,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SEQNUM_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.454">SEQNUM_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.467">SEQNUM_QUALIFIER</a></pre>
 <div class="block">The open seqnum column qualifier</div>
 </li>
 </ul>
@@ -3464,7 +3544,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STATE_QUALIFIER_STR</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/HConstants.html#line.457">STATE_QUALIFIER_STR</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/HConstants.html#line.470">STATE_QUALIFIER_STR</a></pre>
 <div class="block">The state column qualifier</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3478,7 +3558,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>STATE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.459">STATE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.472">STATE_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="SERVERNAME_QUALIFIER_STR">
@@ -3487,7 +3567,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVERNAME_QUALIFIER_STR</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/HConstants.html#line.466">SERVERNAME_QUALIFIER_STR</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/HConstants.html#line.479">SERVERNAME_QUALIFIER_STR</a></pre>
 <div class="block">The serverName column qualifier. Its the server where the region is
  transitioning on, while column server is the server where the region is
  opened on. They are the same when the region is in state OPEN.</div>
@@ -3503,7 +3583,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SERVERNAME_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.468">SERVERNAME_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.481">SERVERNAME_QUALIFIER</a></pre>
 </li>
 </ul>
 <a name="SPLITA_QUALIFIER">
@@ -3512,7 +3592,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLITA_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.471">SPLITA_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.484">SPLITA_QUALIFIER</a></pre>
 <div class="block">The lower-half split region column qualifier</div>
 </li>
 </ul>
@@ -3522,7 +3602,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>SPLITB_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.474">SPLITB_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.487">SPLITB_QUALIFIER</a></pre>
 <div class="block">The upper-half split region column qualifier</div>
 </li>
 </ul>
@@ -3532,7 +3612,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MERGEA_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.477">MERGEA_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.490">MERGEA_QUALIFIER</a></pre>
 <div class="block">The lower-half merge region column qualifier</div>
 </li>
 </ul>
@@ -3542,7 +3622,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>MERGEB_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.480">MERGEB_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.493">MERGEB_QUALIFIER</a></pre>
 <div class="block">The upper-half merge region column qualifier</div>
 </li>
 </ul>
@@ -3552,7 +3632,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_FAMILY_STR</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/HConstants.html#line.483">TABLE_FAMILY_STR</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/HConstants.html#line.496">TABLE_FAMILY_STR</a></pre>
 <div class="block">The catalog family as a string</div>
 <dl>
 <dt><span class="seeLabel">See Also:</span></dt>
@@ -3566,7 +3646,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_FAMILY</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.486">TABLE_FAMILY</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.499">TABLE_FAMILY</a></pre>
 <div class="block">The catalog family</div>
 </li>
 </ul>
@@ -3576,7 +3656,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>TABLE_STATE_QUALIFIER</h4>
-<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.489">TABLE_STATE_QUALIFIER</a></pre>
+<pre>public static final&nbsp;byte[] <a href="../../../../src-html/org/apache/hadoop/hbase/HConstants.html#line.502">TABLE_STATE_QUALIFIER</a></pre>
 <div class="block">The serialized table state qualifier</div>
 </li>
 </ul>
@@ -3586,7 +3666,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>REPLICATION_BARRIER_FAMILY_STR</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/HConstants.html#line.492">REPLICATION_BARRIER_FAMILY_STR</a></pre>
+<pre>public static final&nbsp;<a href="

<TRUNCATED>

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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
index c90ebc9..7700425 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -1123,486 +1123,490 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSeparateClientZKCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSeparateClientZKCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRawAsyncTablePartialScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTablePartialScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResult.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResult.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMobCloneSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetion.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCISleep.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCISleep.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMobCloneSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobCloneSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAppendFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAppendFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCISleep.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCISleep.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRawAsyncTableLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAppendFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAppendFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestServerLoadDurability.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRawAsyncTableLimitedScanWithFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableLimitedScanWithFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAllowPartialScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAllowPartialScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerLoadDurability.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerLoadDurability.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSide3.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAllowPartialScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAllowPartialScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHTableMultiplexerFlushCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSide3.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide3.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRawAsyncTableScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHTableMultiplexerFlushCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexerFlushCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIncrementFromClientSideWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRawAsyncTableScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRawAsyncTableScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIncrementFromClientSideWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementFromClientSideWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConnectionImplementation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionImplementation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScanWithoutFetchingData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConnectionImplementation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionImplementation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreaded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScanWithoutFetchingData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScanWithoutFetchingData.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreaded.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreaded.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIDeleteRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotCloneIndependence.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIDeleteRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncProcedureAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncProcedureAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestZKAsyncRegistry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestZKAsyncRegistry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncClusterAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncProcedureAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncProcedureAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIGetOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncClusterAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAlwaysSetScannerId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAlwaysSetScannerId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIGetOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAlwaysSetScannerId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAlwaysSetScannerId.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncSingleRequestRpcRetryingCaller.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncSingleRequestRpcRetryingCaller.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestRestoreSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRestoreSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAdmin2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncSingleRequestRpcRetryingCaller.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncSingleRequestRpcRetryingCaller.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAdmin2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncRegionAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPutDeleteEtcCellIteration.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncRegionAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMvccConsistentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPutDeleteEtcCellIteration.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutDeleteEtcCellIteration.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableBatch.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatch.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMvccConsistentScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMvccConsistentScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCompleteResultScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableBatch.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableBatch.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIGetRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCompleteResultScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCompleteResultScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIGetRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIGetRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanAll.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanAll.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanAll.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanAll.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBlockEvictionFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIBadHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIBadHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBlockEvictionFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestBlockEvictionFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIBadHostname.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIBadHostname.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncQuotaAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncQuotaAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncQuotaAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncQuotaAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableNoncedRetry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableNoncedRetry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncMetaRegionLocator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestConnectionUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableNoncedRetry.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableNoncedRetry.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestConnectionUtils.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestConnectionUtils.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanMetrics.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncDecommissionAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncDecommissionAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSideScanExcpetionWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideScanExcpetionWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetaCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncDecommissionAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncDecommissionAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClientScannerRPCTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetaCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncReplicationAdminApiWithClusters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApiWithClusters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClientScannerRPCTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIPutOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncReplicationAdminApiWithClusters.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncReplicationAdminApiWithClusters.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncClusterAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIPutOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIPutOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncClusterAdminApi.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncClusterAdminApi.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHTableMultiplexer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannersFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannersFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMobSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotCloneIndependence.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHTableMultiplexer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHTableMultiplexer.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncRegionLocatorTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMobSnapshotCloneIndependence.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotCloneIndependence.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestUpdateConfiguration.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncRegionLocatorTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionLocatorTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAdmin1.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin1.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestUpdateConfiguration.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestUpdateConfiguration.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIIncrementRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIIncrementRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAdmin1.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdmin1.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientWithRegionReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIIncrementRpcTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIIncrementRpcTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIllegalTableDescriptor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIllegalTableDescriptor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCloneSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCloneSnapshotFromClientWithRegionReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShortCircuitConnection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIllegalTableDescriptor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIllegalTableDescriptor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResultFromCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShortCircuitConnection.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShortCircuitConnection.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCIDeleteOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResultFromCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultFromCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreadedWithEagerCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithEagerCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCIDeleteOperationTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCIDeleteOperationTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestPutWithDelete.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreadedWithEagerCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithEagerCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestEnableTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestEnableTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestPutWithDelete.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestPutWithDelete.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestLeaseRenewal.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestEnableTable.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestEnableTable.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicaWithCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestLeaseRenewal.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestLeaseRenewal.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncRegionAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicaWithCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicaWithCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableFavoredNodes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncRegionAdminApi2.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncRegionAdminApi2.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMobSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableFavoredNodes.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableFavoredNodes.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSideNoCodec.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMobSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFromClientSideWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSideNoCodec.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideNoCodec.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMalformedCellFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFromClientSideWithCoprocessor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFromClientSideWithCoprocessor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreadedWithBasicCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithBasicCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMalformedCellFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMalformedCellFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTimestampsFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableGetMultiThreadedWithBasicCompaction.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableGetMultiThreadedWithBasicCompaction.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTimestampsFilter.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTimestampsFilter.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanRenewLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScanRenewLease.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScanRenewLease.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSmallReversedScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMobRestoreSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSmallReversedScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSmallReversedScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotWithAcl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMobRestoreSnapshotFromClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMobRestoreSnapshotFromClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotWithAcl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotWithAcl.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSizeFailures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotFromClientWithRegionReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotFromClientWithRegionReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestScannerTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSizeFailures.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSizeFailures.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestScannerTimeout.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestScannerTimeout.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestCheckAndMutate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCheckAndMutate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScan.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestServerBusyException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestCheckAndMutate.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestCheckAndMutate.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMetaWithReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestServerBusyException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestServerBusyException.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClientOperationInterrupt.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetaWithReplicas.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMetaWithReplicas.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi3.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClientOperationInterrupt.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientOperationInterrupt.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableAdminApi3.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableAdminApi3.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSplitOrMergeStatus.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiParallel.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiParallel.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocatorConcurrenyLimit.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocatorConcurrenyLimit.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSplitOrMergeStatus.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSplitOrMergeStatus.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncAdminBuilder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncNonMetaRegionLocatorConcurrenyLimit.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncNonMetaRegionLocatorConcurrenyLimit.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIntraRowPagination.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncAdminBuilder.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAdminBuilder.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestHBaseAdminNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIntraRowPagination.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIntraRowPagination.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestBatchScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestBatchScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestHBaseAdminNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestHBaseAdminNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncBufferMutator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestBatchScanResultCache.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestBatchScanResultCache.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableSnapshotScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncBufferMutator.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncBufferMutator.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableSnapshotScanner.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestIncrementsFromClientSide.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestIncrementsFromClientSide.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResultSizeEstimation.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultSizeEstimation.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultipleTimestamps.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestFastFail.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestFastFail.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAvoidCellReferencesIntoShippedBlocks.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAvoidCellReferencesIntoShippedBlocks.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncResultScannerCursor.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncResultScannerCursor.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestSnapshotMetadata.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestSnapshotMetadata.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAsyncTableScannerCloseWhileSuspending.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncTableScannerCloseWhileSuspending.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMultiRespectsLimits.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestMultiRespectsLimits.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestClientPushback.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestClientPushback.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestShellNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAdminShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestShellNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestShellNoCluster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestQuotasShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestAdminShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAdminShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestReplicationShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestQuotasShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestQuotasShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestTableShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestReplicationShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestReplicationShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestTableShell.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestTableShell.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestRpcControllerFactory.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestRpcControllerFactory.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>static <a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestAsyncAggregationClient.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/client/TestAsyncAggregationClient.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>


[20/41] hbase-site git commit: Published site at d8b550fabcacf3050583b514c4081adf5d087d65.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/2a4c7d89/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
index c8b113b..a97dfdc 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html
@@ -146,3486 +146,3511 @@
 <span class="sourceLineNo">138</span>import org.apache.hadoop.hbase.master.replication.ReplicationPeerManager;<a name="line.138"></a>
 <span class="sourceLineNo">139</span>import org.apache.hadoop.hbase.master.replication.UpdatePeerConfigProcedure;<a name="line.139"></a>
 <span class="sourceLineNo">140</span>import org.apache.hadoop.hbase.master.snapshot.SnapshotManager;<a name="line.140"></a>
-<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.142"></a>
-<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.145"></a>
-<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.149"></a>
-<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.150"></a>
-<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.151"></a>
-<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.152"></a>
-<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.155"></a>
-<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.156"></a>
-<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.157"></a>
-<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.159"></a>
-<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.162"></a>
-<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.164"></a>
-<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.166"></a>
-<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.167"></a>
-<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.168"></a>
-<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.172"></a>
-<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.173"></a>
-<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.zookeeper.KeeperException;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.eclipse.jetty.server.Server;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.slf4j.Logger;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.slf4j.LoggerFactory;<a name="line.205"></a>
-<span class="sourceLineNo">206</span><a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.209"></a>
-<span class="sourceLineNo">210</span><a name="line.210"></a>
-<span class="sourceLineNo">211</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<a name="line.217"></a>
-<span class="sourceLineNo">218</span><a name="line.218"></a>
-<span class="sourceLineNo">219</span>/**<a name="line.219"></a>
-<span class="sourceLineNo">220</span> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.220"></a>
-<span class="sourceLineNo">221</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.221"></a>
-<span class="sourceLineNo">222</span> * run the cluster.  All others park themselves in their constructor until<a name="line.222"></a>
-<span class="sourceLineNo">223</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.223"></a>
-<span class="sourceLineNo">224</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.224"></a>
-<span class="sourceLineNo">225</span> *<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.230"></a>
+<span class="sourceLineNo">141</span>import org.apache.hadoop.hbase.master.zksyncer.MasterAddressSyncer;<a name="line.141"></a>
+<span class="sourceLineNo">142</span>import org.apache.hadoop.hbase.master.zksyncer.MetaLocationSyncer;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>import org.apache.hadoop.hbase.mob.MobConstants;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>import org.apache.hadoop.hbase.monitoring.MemoryBoundedLogMessageBuffer;<a name="line.144"></a>
+<span class="sourceLineNo">145</span>import org.apache.hadoop.hbase.monitoring.MonitoredTask;<a name="line.145"></a>
+<span class="sourceLineNo">146</span>import org.apache.hadoop.hbase.monitoring.TaskMonitor;<a name="line.146"></a>
+<span class="sourceLineNo">147</span>import org.apache.hadoop.hbase.procedure.MasterProcedureManagerHost;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>import org.apache.hadoop.hbase.procedure.flush.MasterFlushTableProcedureManager;<a name="line.148"></a>
+<span class="sourceLineNo">149</span>import org.apache.hadoop.hbase.procedure2.LockedResource;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>import org.apache.hadoop.hbase.procedure2.Procedure;<a name="line.150"></a>
+<span class="sourceLineNo">151</span>import org.apache.hadoop.hbase.procedure2.ProcedureEvent;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>import org.apache.hadoop.hbase.procedure2.ProcedureExecutor;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureDispatcher.RemoteProcedure;<a name="line.153"></a>
+<span class="sourceLineNo">154</span>import org.apache.hadoop.hbase.procedure2.RemoteProcedureException;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>import org.apache.hadoop.hbase.procedure2.store.wal.WALProcedureStore;<a name="line.155"></a>
+<span class="sourceLineNo">156</span>import org.apache.hadoop.hbase.quotas.MasterQuotaManager;<a name="line.156"></a>
+<span class="sourceLineNo">157</span>import org.apache.hadoop.hbase.quotas.MasterSpaceQuotaObserver;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>import org.apache.hadoop.hbase.quotas.QuotaObserverChore;<a name="line.158"></a>
+<span class="sourceLineNo">159</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>import org.apache.hadoop.hbase.quotas.SnapshotQuotaObserverChore;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifier;<a name="line.161"></a>
+<span class="sourceLineNo">162</span>import org.apache.hadoop.hbase.quotas.SpaceQuotaSnapshotNotifierFactory;<a name="line.162"></a>
+<span class="sourceLineNo">163</span>import org.apache.hadoop.hbase.regionserver.DefaultStoreEngine;<a name="line.163"></a>
+<span class="sourceLineNo">164</span>import org.apache.hadoop.hbase.regionserver.HRegionServer;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>import org.apache.hadoop.hbase.regionserver.HStore;<a name="line.165"></a>
+<span class="sourceLineNo">166</span>import org.apache.hadoop.hbase.regionserver.RSRpcServices;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>import org.apache.hadoop.hbase.regionserver.RegionCoprocessorHost;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>import org.apache.hadoop.hbase.regionserver.RegionSplitPolicy;<a name="line.168"></a>
+<span class="sourceLineNo">169</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.170"></a>
+<span class="sourceLineNo">171</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.172"></a>
+<span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.174"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.zookeeper.KeeperException;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.eclipse.jetty.server.Server;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.slf4j.Logger;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.slf4j.LoggerFactory;<a name="line.207"></a>
+<span class="sourceLineNo">208</span><a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.222"></a>
+<span class="sourceLineNo">223</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.223"></a>
+<span class="sourceLineNo">224</span> * run the cluster.  All others park themselves in their constructor until<a name="line.224"></a>
+<span class="sourceLineNo">225</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.226"></a>
+<span class="sourceLineNo">227</span> *<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.229"></a>
+<span class="sourceLineNo">230</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.230"></a>
 <span class="sourceLineNo">231</span> *<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * @see org.apache.zookeeper.Watcher<a name="line.232"></a>
-<span class="sourceLineNo">233</span> */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.234"></a>
-<span class="sourceLineNo">235</span>@SuppressWarnings("deprecation")<a name="line.235"></a>
-<span class="sourceLineNo">236</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.237"></a>
-<span class="sourceLineNo">238</span><a name="line.238"></a>
-<span class="sourceLineNo">239</span>  /**<a name="line.239"></a>
-<span class="sourceLineNo">240</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.240"></a>
-<span class="sourceLineNo">241</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.241"></a>
-<span class="sourceLineNo">242</span>   */<a name="line.242"></a>
-<span class="sourceLineNo">243</span>  private static class InitializationMonitor extends HasThread {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /**<a name="line.248"></a>
-<span class="sourceLineNo">249</span>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.249"></a>
-<span class="sourceLineNo">250</span>     * true, do nothing otherwise.<a name="line.250"></a>
-<span class="sourceLineNo">251</span>     */<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    public static final boolean HALT_DEFAULT = false;<a name="line.253"></a>
-<span class="sourceLineNo">254</span><a name="line.254"></a>
-<span class="sourceLineNo">255</span>    private final HMaster master;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    private final long timeout;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    private final boolean haltOnTimeout;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    InitializationMonitor(HMaster master) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      super("MasterInitializationMonitor");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      this.master = master;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      this.setDaemon(true);<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span><a name="line.267"></a>
-<span class="sourceLineNo">268</span>    @Override<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    public void run() {<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      try {<a name="line.270"></a>
-<span class="sourceLineNo">271</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>          Thread.sleep(timeout);<a name="line.272"></a>
-<span class="sourceLineNo">273</span>          if (master.isInitialized()) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          } else {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.276"></a>
-<span class="sourceLineNo">277</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            if (haltOnTimeout) {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.279"></a>
-<span class="sourceLineNo">280</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.280"></a>
-<span class="sourceLineNo">281</span>              System.exit(-1);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>          }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        }<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      } catch (InterruptedException ie) {<a name="line.285"></a>
-<span class="sourceLineNo">286</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  //instance into web context.<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  public static final String MASTER = "master";<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // Manager and zk listener for master election<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  private final ActiveMasterManager activeMasterManager;<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  // Region server tracker<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  RegionServerTracker regionServerTracker;<a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Draining region server tracker<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private DrainingServerTracker drainingServerTracker;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Tracker for load balancer state<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span><a name="line.303"></a>
-<span class="sourceLineNo">304</span>  // Tracker for split and merge state<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.305"></a>
-<span class="sourceLineNo">306</span><a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for region normalizer state<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.308"></a>
+<span class="sourceLineNo">232</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.232"></a>
+<span class="sourceLineNo">233</span> *<a name="line.233"></a>
+<span class="sourceLineNo">234</span> * @see org.apache.zookeeper.Watcher<a name="line.234"></a>
+<span class="sourceLineNo">235</span> */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.236"></a>
+<span class="sourceLineNo">237</span>@SuppressWarnings("deprecation")<a name="line.237"></a>
+<span class="sourceLineNo">238</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class.getName());<a name="line.239"></a>
+<span class="sourceLineNo">240</span><a name="line.240"></a>
+<span class="sourceLineNo">241</span>  /**<a name="line.241"></a>
+<span class="sourceLineNo">242</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.242"></a>
+<span class="sourceLineNo">243</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.243"></a>
+<span class="sourceLineNo">244</span>   */<a name="line.244"></a>
+<span class="sourceLineNo">245</span>  private static class InitializationMonitor extends HasThread {<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.251"></a>
+<span class="sourceLineNo">252</span>     * true, do nothing otherwise.<a name="line.252"></a>
+<span class="sourceLineNo">253</span>     */<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    public static final boolean HALT_DEFAULT = false;<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    private final HMaster master;<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    private final long timeout;<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    private final boolean haltOnTimeout;<a name="line.259"></a>
+<span class="sourceLineNo">260</span><a name="line.260"></a>
+<span class="sourceLineNo">261</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    InitializationMonitor(HMaster master) {<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      super("MasterInitializationMonitor");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      this.master = master;<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.setDaemon(true);<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>    @Override<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    public void run() {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.273"></a>
+<span class="sourceLineNo">274</span>          Thread.sleep(timeout);<a name="line.274"></a>
+<span class="sourceLineNo">275</span>          if (master.isInitialized()) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          } else {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>            if (haltOnTimeout) {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.281"></a>
+<span class="sourceLineNo">282</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>              System.exit(-1);<a name="line.283"></a>
+<span class="sourceLineNo">284</span>            }<a name="line.284"></a>
+<span class="sourceLineNo">285</span>          }<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        }<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      } catch (InterruptedException ie) {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  //instance into web context.<a name="line.294"></a>
+<span class="sourceLineNo">295</span>  public static final String MASTER = "master";<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>  // Manager and zk listener for master election<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  private final ActiveMasterManager activeMasterManager;<a name="line.298"></a>
+<span class="sourceLineNo">299</span>  // Region server tracker<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  RegionServerTracker regionServerTracker;<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  // Draining region server tracker<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private DrainingServerTracker drainingServerTracker;<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  // Tracker for load balancer state<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.308"></a>
 <span class="sourceLineNo">309</span><a name="line.309"></a>
-<span class="sourceLineNo">310</span>  //Tracker for master maintenance mode setting<a name="line.310"></a>
-<span class="sourceLineNo">311</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.311"></a>
+<span class="sourceLineNo">310</span>  // Tracker for split and merge state<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.311"></a>
 <span class="sourceLineNo">312</span><a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private ClusterSchemaService clusterSchemaService;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    "hbase.master.wait.on.service.seconds";<a name="line.316"></a>
-<span class="sourceLineNo">317</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.317"></a>
+<span class="sourceLineNo">313</span>  // Tracker for region normalizer state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  //Tracker for master maintenance mode setting<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.317"></a>
 <span class="sourceLineNo">318</span><a name="line.318"></a>
-<span class="sourceLineNo">319</span>  // Metrics for the HMaster<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  final MetricsMaster metricsMaster;<a name="line.320"></a>
-<span class="sourceLineNo">321</span>  // file system manager for the master FS operations<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  private MasterFileSystem fileSystemManager;<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  private MasterWalManager walManager;<a name="line.323"></a>
+<span class="sourceLineNo">319</span>  private ClusterSchemaService clusterSchemaService;<a name="line.319"></a>
+<span class="sourceLineNo">320</span><a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.321"></a>
+<span class="sourceLineNo">322</span>    "hbase.master.wait.on.service.seconds";<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.323"></a>
 <span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // server manager to deal with region server info<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  private volatile ServerManager serverManager;<a name="line.326"></a>
-<span class="sourceLineNo">327</span><a name="line.327"></a>
-<span class="sourceLineNo">328</span>  // manager of assignment nodes in zookeeper<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  private AssignmentManager assignmentManager;<a name="line.329"></a>
+<span class="sourceLineNo">325</span>  // Metrics for the HMaster<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  final MetricsMaster metricsMaster;<a name="line.326"></a>
+<span class="sourceLineNo">327</span>  // file system manager for the master FS operations<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  private MasterFileSystem fileSystemManager;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  private MasterWalManager walManager;<a name="line.329"></a>
 <span class="sourceLineNo">330</span><a name="line.330"></a>
-<span class="sourceLineNo">331</span>  // manager of replication<a name="line.331"></a>
-<span class="sourceLineNo">332</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.332"></a>
+<span class="sourceLineNo">331</span>  // server manager to deal with region server info<a name="line.331"></a>
+<span class="sourceLineNo">332</span>  private volatile ServerManager serverManager;<a name="line.332"></a>
 <span class="sourceLineNo">333</span><a name="line.333"></a>
-<span class="sourceLineNo">334</span>  // buffer for "fatal error" notices from region servers<a name="line.334"></a>
-<span class="sourceLineNo">335</span>  // in the cluster. This is only used for assisting<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // operations/debugging.<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // flag set after we become the active master (used for testing)<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private volatile boolean activeMaster = false;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // flag set after we complete initialization once active<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.343"></a>
+<span class="sourceLineNo">334</span>  // manager of assignment nodes in zookeeper<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  private AssignmentManager assignmentManager;<a name="line.335"></a>
+<span class="sourceLineNo">336</span><a name="line.336"></a>
+<span class="sourceLineNo">337</span>  // manager of replication<a name="line.337"></a>
+<span class="sourceLineNo">338</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.338"></a>
+<span class="sourceLineNo">339</span><a name="line.339"></a>
+<span class="sourceLineNo">340</span>  // buffer for "fatal error" notices from region servers<a name="line.340"></a>
+<span class="sourceLineNo">341</span>  // in the cluster. This is only used for assisting<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  // operations/debugging.<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.343"></a>
 <span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>  // flag set after master services are started,<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  // initialization may have not completed yet.<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  volatile boolean serviceStarted = false;<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>  // flag set after we complete assignMeta.<a name="line.349"></a>
-<span class="sourceLineNo">350</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // Maximum time we should run balancer for<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private final int maxBlancingTime;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  // Maximum percent of regions in transition when balancing<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  private final double maxRitPercent;<a name="line.356"></a>
-<span class="sourceLineNo">357</span><a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final LockManager lockManager = new LockManager(this);<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private LoadBalancer balancer;<a name="line.360"></a>
-<span class="sourceLineNo">361</span>  private RegionNormalizer normalizer;<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private BalancerChore balancerChore;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  private RegionNormalizerChore normalizerChore;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private ClusterStatusChore clusterStatusChore;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.365"></a>
-<span class="sourceLineNo">366</span><a name="line.366"></a>
-<span class="sourceLineNo">367</span>  CatalogJanitor catalogJanitorChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private LogCleaner logCleaner;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private HFileCleaner hfileCleaner;<a name="line.369"></a>
-<span class="sourceLineNo">370</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.370"></a>
-<span class="sourceLineNo">371</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private MobCompactionChore mobCompactChore;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  // used to synchronize the mobCompactionStates<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  // save the information of mob compactions in tables.<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.378"></a>
-<span class="sourceLineNo">379</span><a name="line.379"></a>
-<span class="sourceLineNo">380</span>  MasterCoprocessorHost cpHost;<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private final boolean preLoadTableDescriptors;<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  // Time stamps for when a hmaster became active<a name="line.384"></a>
-<span class="sourceLineNo">385</span>  private long masterActiveTime;<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.387"></a>
-<span class="sourceLineNo">388</span>  private long masterFinishedInitializationTime;<a name="line.388"></a>
+<span class="sourceLineNo">345</span>  // flag set after we become the active master (used for testing)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>  private volatile boolean activeMaster = false;<a name="line.346"></a>
+<span class="sourceLineNo">347</span><a name="line.347"></a>
+<span class="sourceLineNo">348</span>  // flag set after we complete initialization once active<a name="line.348"></a>
+<span class="sourceLineNo">349</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>  // flag set after master services are started,<a name="line.351"></a>
+<span class="sourceLineNo">352</span>  // initialization may have not completed yet.<a name="line.352"></a>
+<span class="sourceLineNo">353</span>  volatile boolean serviceStarted = false;<a name="line.353"></a>
+<span class="sourceLineNo">354</span><a name="line.354"></a>
+<span class="sourceLineNo">355</span>  // flag set after we complete assignMeta.<a name="line.355"></a>
+<span class="sourceLineNo">356</span>  private final ProcedureEvent&lt;?&gt; serverCrashProcessingEnabled =<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    new ProcedureEvent&lt;&gt;("server crash processing");<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  // Maximum time we should run balancer for<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  private final int maxBlancingTime;<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  // Maximum percent of regions in transition when balancing<a name="line.361"></a>
+<span class="sourceLineNo">362</span>  private final double maxRitPercent;<a name="line.362"></a>
+<span class="sourceLineNo">363</span><a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private final LockManager lockManager = new LockManager(this);<a name="line.364"></a>
+<span class="sourceLineNo">365</span><a name="line.365"></a>
+<span class="sourceLineNo">366</span>  private LoadBalancer balancer;<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  private RegionNormalizer normalizer;<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  private BalancerChore balancerChore;<a name="line.368"></a>
+<span class="sourceLineNo">369</span>  private RegionNormalizerChore normalizerChore;<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  private ClusterStatusChore clusterStatusChore;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span><a name="line.372"></a>
+<span class="sourceLineNo">373</span>  CatalogJanitor catalogJanitorChore;<a name="line.373"></a>
+<span class="sourceLineNo">374</span>  private LogCleaner logCleaner;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  private HFileCleaner hfileCleaner;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.377"></a>
+<span class="sourceLineNo">378</span>  private MobCompactionChore mobCompactChore;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>  // used to synchronize the mobCompactionStates<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  // save the information of mob compactions in tables.<a name="line.382"></a>
+<span class="sourceLineNo">383</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.384"></a>
+<span class="sourceLineNo">385</span><a name="line.385"></a>
+<span class="sourceLineNo">386</span>  MasterCoprocessorHost cpHost;<a name="line.386"></a>
+<span class="sourceLineNo">387</span><a name="line.387"></a>
+<span class="sourceLineNo">388</span>  private final boolean preLoadTableDescriptors;<a name="line.388"></a>
 <span class="sourceLineNo">389</span><a name="line.389"></a>
-<span class="sourceLineNo">390</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.390"></a>
-<span class="sourceLineNo">391</span>  private final boolean masterCheckCompression;<a name="line.391"></a>
+<span class="sourceLineNo">390</span>  // Time stamps for when a hmaster became active<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  private long masterActiveTime;<a name="line.391"></a>
 <span class="sourceLineNo">392</span><a name="line.392"></a>
-<span class="sourceLineNo">393</span>  //should we check encryption settings at master side, default true<a name="line.393"></a>
-<span class="sourceLineNo">394</span>  private final boolean masterCheckEncryption;<a name="line.394"></a>
+<span class="sourceLineNo">393</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.393"></a>
+<span class="sourceLineNo">394</span>  private long masterFinishedInitializationTime;<a name="line.394"></a>
 <span class="sourceLineNo">395</span><a name="line.395"></a>
-<span class="sourceLineNo">396</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.396"></a>
-<span class="sourceLineNo">397</span><a name="line.397"></a>
-<span class="sourceLineNo">398</span>  // monitor for snapshot of hbase tables<a name="line.398"></a>
-<span class="sourceLineNo">399</span>  SnapshotManager snapshotManager;<a name="line.399"></a>
-<span class="sourceLineNo">400</span>  // monitor for distributed procedures<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  private MasterProcedureManagerHost mpmHost;<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  private volatile MasterQuotaManager quotaManager;<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>  private QuotaObserverChore quotaObserverChore;<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.407"></a>
+<span class="sourceLineNo">396</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.396"></a>
+<span class="sourceLineNo">397</span>  private final boolean masterCheckCompression;<a name="line.397"></a>
+<span class="sourceLineNo">398</span><a name="line.398"></a>
+<span class="sourceLineNo">399</span>  //should we check encryption settings at master side, default true<a name="line.399"></a>
+<span class="sourceLineNo">400</span>  private final boolean masterCheckEncryption;<a name="line.400"></a>
+<span class="sourceLineNo">401</span><a name="line.401"></a>
+<span class="sourceLineNo">402</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.402"></a>
+<span class="sourceLineNo">403</span><a name="line.403"></a>
+<span class="sourceLineNo">404</span>  // monitor for snapshot of hbase tables<a name="line.404"></a>
+<span class="sourceLineNo">405</span>  SnapshotManager snapshotManager;<a name="line.405"></a>
+<span class="sourceLineNo">406</span>  // monitor for distributed procedures<a name="line.406"></a>
+<span class="sourceLineNo">407</span>  private MasterProcedureManagerHost mpmHost;<a name="line.407"></a>
 <span class="sourceLineNo">408</span><a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private WALProcedureStore procedureStore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>  // handle table states<a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private TableStateManager tableStateManager;<a name="line.413"></a>
+<span class="sourceLineNo">409</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.409"></a>
+<span class="sourceLineNo">410</span>  private volatile MasterQuotaManager quotaManager;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  private QuotaObserverChore quotaObserverChore;<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.413"></a>
 <span class="sourceLineNo">414</span><a name="line.414"></a>
-<span class="sourceLineNo">415</span>  private long splitPlanCount;<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  private long mergePlanCount;<a name="line.416"></a>
+<span class="sourceLineNo">415</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.415"></a>
+<span class="sourceLineNo">416</span>  private WALProcedureStore procedureStore;<a name="line.416"></a>
 <span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /* Handle favored nodes information */<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private FavoredNodesManager favoredNodesManager;<a name="line.419"></a>
+<span class="sourceLineNo">418</span>  // handle table states<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  private TableStateManager tableStateManager;<a name="line.419"></a>
 <span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.421"></a>
-<span class="sourceLineNo">422</span>  private Server masterJettyServer;<a name="line.422"></a>
+<span class="sourceLineNo">421</span>  private long splitPlanCount;<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  private long mergePlanCount;<a name="line.422"></a>
 <span class="sourceLineNo">423</span><a name="line.423"></a>
-<span class="sourceLineNo">424</span>  public static class RedirectServlet extends HttpServlet {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    private final int regionServerInfoPort;<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    private final String regionServerHostname;<a name="line.427"></a>
-<span class="sourceLineNo">428</span><a name="line.428"></a>
-<span class="sourceLineNo">429</span>    /**<a name="line.429"></a>
-<span class="sourceLineNo">430</span>     * @param infoServer that we're trying to send all requests to<a name="line.430"></a>
-<span class="sourceLineNo">431</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.431"></a>
-<span class="sourceLineNo">432</span>     */<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.433"></a>
-<span class="sourceLineNo">434</span>       regionServerInfoPort = infoServer.getPort();<a name="line.434"></a>
-<span class="sourceLineNo">435</span>       regionServerHostname = hostname;<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>    @Override<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    public void doGet(HttpServletRequest request,<a name="line.439"></a>
-<span class="sourceLineNo">440</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.440"></a>
-<span class="sourceLineNo">441</span>      String redirectHost = regionServerHostname;<a name="line.441"></a>
-<span class="sourceLineNo">442</span>      if(redirectHost == null) {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>        redirectHost = request.getServerName();<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.445"></a>
-<span class="sourceLineNo">446</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.446"></a>
-<span class="sourceLineNo">447</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.447"></a>
-<span class="sourceLineNo">448</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.448"></a>
-<span class="sourceLineNo">449</span>              "to an appropriate hostname.");<a name="line.449"></a>
-<span class="sourceLineNo">450</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.450"></a>
-<span class="sourceLineNo">451</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.457"></a>
-<span class="sourceLineNo">458</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      String redirectUrl = request.getScheme() + "://"<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.460"></a>
-<span class="sourceLineNo">461</span>        + request.getRequestURI();<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      response.sendRedirect(redirectUrl);<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><a name="line.465"></a>
-<span class="sourceLineNo">466</span>  /**<a name="line.466"></a>
-<span class="sourceLineNo">467</span>   * Initializes the HMaster. The steps are as follows:<a name="line.467"></a>
-<span class="sourceLineNo">468</span>   * &lt;p&gt;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>   * &lt;ol&gt;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.470"></a>
-<span class="sourceLineNo">471</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;/ol&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;p&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * Remaining steps of initialization occur in<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * the master becomes the active one.<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   */<a name="line.477"></a>
-<span class="sourceLineNo">478</span>  public HMaster(final Configuration conf)<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      throws IOException, KeeperException {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>    super(conf);<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    TraceUtil.initTracer(conf);<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    try {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.483"></a>
-<span class="sourceLineNo">484</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.485"></a>
-<span class="sourceLineNo">486</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.486"></a>
-<span class="sourceLineNo">487</span><a name="line.487"></a>
-<span class="sourceLineNo">488</span>      // Disable usage of meta replicas in the master<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.489"></a>
-<span class="sourceLineNo">490</span><a name="line.490"></a>
-<span class="sourceLineNo">491</span>      decorateMasterConfiguration(this.conf);<a name="line.491"></a>
-<span class="sourceLineNo">492</span><a name="line.492"></a>
-<span class="sourceLineNo">493</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      }<a name="line.497"></a>
+<span class="sourceLineNo">424</span>  /* Handle favored nodes information */<a name="line.424"></a>
+<span class="sourceLineNo">425</span>  private FavoredNodesManager favoredNodesManager;<a name="line.425"></a>
+<span class="sourceLineNo">426</span><a name="line.426"></a>
+<span class="sourceLineNo">427</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.427"></a>
+<span class="sourceLineNo">428</span>  private Server masterJettyServer;<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static class RedirectServlet extends HttpServlet {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.431"></a>
+<span class="sourceLineNo">432</span>    private final int regionServerInfoPort;<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    private final String regionServerHostname;<a name="line.433"></a>
+<span class="sourceLineNo">434</span><a name="line.434"></a>
+<span class="sourceLineNo">435</span>    /**<a name="line.435"></a>
+<span class="sourceLineNo">436</span>     * @param infoServer that we're trying to send all requests to<a name="line.436"></a>
+<span class="sourceLineNo">437</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.437"></a>
+<span class="sourceLineNo">438</span>     */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>       regionServerInfoPort = infoServer.getPort();<a name="line.440"></a>
+<span class="sourceLineNo">441</span>       regionServerHostname = hostname;<a name="line.441"></a>
+<span class="sourceLineNo">442</span>    }<a name="line.442"></a>
+<span class="sourceLineNo">443</span><a name="line.443"></a>
+<span class="sourceLineNo">444</span>    @Override<a name="line.444"></a>
+<span class="sourceLineNo">445</span>    public void doGet(HttpServletRequest request,<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      String redirectHost = regionServerHostname;<a name="line.447"></a>
+<span class="sourceLineNo">448</span>      if(redirectHost == null) {<a name="line.448"></a>
+<span class="sourceLineNo">449</span>        redirectHost = request.getServerName();<a name="line.449"></a>
+<span class="sourceLineNo">450</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.450"></a>
+<span class="sourceLineNo">451</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.451"></a>
+<span class="sourceLineNo">452</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.452"></a>
+<span class="sourceLineNo">453</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.453"></a>
+<span class="sourceLineNo">454</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.454"></a>
+<span class="sourceLineNo">455</span>              "to an appropriate hostname.");<a name="line.455"></a>
+<span class="sourceLineNo">456</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.456"></a>
+<span class="sourceLineNo">457</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.457"></a>
+<span class="sourceLineNo">458</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.458"></a>
+<span class="sourceLineNo">459</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.459"></a>
+<span class="sourceLineNo">460</span>          return;<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        }<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      String redirectUrl = request.getScheme() + "://"<a name="line.465"></a>
+<span class="sourceLineNo">466</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.466"></a>
+<span class="sourceLineNo">467</span>        + request.getRequestURI();<a name="line.467"></a>
+<span class="sourceLineNo">468</span>      response.sendRedirect(redirectUrl);<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    }<a name="line.469"></a>
+<span class="sourceLineNo">470</span>  }<a name="line.470"></a>
+<span class="sourceLineNo">471</span><a name="line.471"></a>
+<span class="sourceLineNo">472</span>  /**<a name="line.472"></a>
+<span class="sourceLineNo">473</span>   * Initializes the HMaster. The steps are as follows:<a name="line.473"></a>
+<span class="sourceLineNo">474</span>   * &lt;p&gt;<a name="line.474"></a>
+<span class="sourceLineNo">475</span>   * &lt;ol&gt;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.476"></a>
+<span class="sourceLineNo">477</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.477"></a>
+<span class="sourceLineNo">478</span>   * &lt;/ol&gt;<a name="line.478"></a>
+<span class="sourceLineNo">479</span>   * &lt;p&gt;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>   * Remaining steps of initialization occur in<a name="line.480"></a>
+<span class="sourceLineNo">481</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.481"></a>
+<span class="sourceLineNo">482</span>   * the master becomes the active one.<a name="line.482"></a>
+<span class="sourceLineNo">483</span>   */<a name="line.483"></a>
+<span class="sourceLineNo">484</span>  public HMaster(final Configuration conf)<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      throws IOException, KeeperException {<a name="line.485"></a>
+<span class="sourceLineNo">486</span>    super(conf);<a name="line.486"></a>
+<span class="sourceLineNo">487</span>    TraceUtil.initTracer(conf);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    try {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.489"></a>
+<span class="sourceLineNo">490</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.491"></a>
+<span class="sourceLineNo">492</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.492"></a>
+<span class="sourceLineNo">493</span><a name="line.493"></a>
+<span class="sourceLineNo">494</span>      // Disable usage of meta replicas in the master<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span><a name="line.496"></a>
+<span class="sourceLineNo">497</span>      decorateMasterConfiguration(this.conf);<a name="line.497"></a>
 <span class="sourceLineNo">498</span><a name="line.498"></a>
-<span class="sourceLineNo">499</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.499"></a>
-<span class="sourceLineNo">500</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.500"></a>
-<span class="sourceLineNo">501</span><a name="line.501"></a>
-<span class="sourceLineNo">502</span>      // should we check encryption settings at master side, default true<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.503"></a>
+<span class="sourceLineNo">499</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.500"></a>
+<span class="sourceLineNo">501</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.501"></a>
+<span class="sourceLineNo">502</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      }<a name="line.503"></a>
 <span class="sourceLineNo">504</span><a name="line.504"></a>
-<span class="sourceLineNo">505</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      // preload table descriptor at startup<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.508"></a>
-<span class="sourceLineNo">509</span><a name="line.509"></a>
-<span class="sourceLineNo">510</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      // Do we publish the status?<a name="line.514"></a>
+<span class="sourceLineNo">505</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.506"></a>
+<span class="sourceLineNo">507</span><a name="line.507"></a>
+<span class="sourceLineNo">508</span>      // should we check encryption settings at master side, default true<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.509"></a>
+<span class="sourceLineNo">510</span><a name="line.510"></a>
+<span class="sourceLineNo">511</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.511"></a>
+<span class="sourceLineNo">512</span><a name="line.512"></a>
+<span class="sourceLineNo">513</span>      // preload table descriptor at startup<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.514"></a>
 <span class="sourceLineNo">515</span><a name="line.515"></a>
-<span class="sourceLineNo">516</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.516"></a>
-<span class="sourceLineNo">517</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.518"></a>
-<span class="sourceLineNo">519</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.519"></a>
-<span class="sourceLineNo">520</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>              ClusterStatusPublisher.Publisher.class);<a name="line.521"></a>
-<span class="sourceLineNo">522</span><a name="line.522"></a>
-<span class="sourceLineNo">523</span>      if (shouldPublish) {<a name="line.523"></a>
-<span class="sourceLineNo">524</span>        if (publisherClass == null) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.525"></a>
-<span class="sourceLineNo">526</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.526"></a>
-<span class="sourceLineNo">527</span>              " is not set - not publishing status");<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        } else {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.529"></a>
-<span class="sourceLineNo">530</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.530"></a>
-<span class="sourceLineNo">531</span>        }<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      }<a name="line.532"></a>
-<span class="sourceLineNo">533</span><a name="line.533"></a>
-<span class="sourceLineNo">534</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.535"></a>
-<span class="sourceLineNo">536</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      } else {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>        this.activeMasterManager = null;<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      }<a name="line.539"></a>
-<span class="sourceLineNo">540</span>    } catch (Throwable t) {<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.541"></a>
-<span class="sourceLineNo">542</span>      // cause of failed startup is lost.<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      LOG.error("Failed construction of Master", t);<a name="line.543"></a>
-<span class="sourceLineNo">544</span>      throw t;<a name="line.544"></a>
-<span class="sourceLineNo">545</span>    }<a name="line.545"></a>
-<span class="sourceLineNo">546</span>  }<a name="line.546"></a>
-<span class="sourceLineNo">547</span><a name="line.547"></a>
-<span class="sourceLineNo">548</span>  @Override<a name="line.548"></a>
-<span class="sourceLineNo">549</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>  }<a name="line.551"></a>
-<span class="sourceLineNo">552</span><a name="line.552"></a>
-<span class="sourceLineNo">553</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.553"></a>
-<span class="sourceLineNo">554</span>  // block in here until then.<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  @Override<a name="line.555"></a>
-<span class="sourceLineNo">556</span>  public void run() {<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    try {<a name="line.557"></a>
-<span class="sourceLineNo">558</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.558"></a>
-<span class="sourceLineNo">559</span>        try {<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          int infoPort = putUpJettyServer();<a name="line.560"></a>
-<span class="sourceLineNo">561</span>          startActiveMasterManager(infoPort);<a name="line.561"></a>
-<span class="sourceLineNo">562</span>        } catch (Throwable t) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          // Make sure we log the exception.<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          String error = "Failed to become Active Master";<a name="line.564"></a>
-<span class="sourceLineNo">565</span>          LOG.error(error, t);<a name="line.565"></a>
-<span class="sourceLineNo">566</span>          // Abort should have been called already.<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          if (!isAborted()) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            abort(error, t);<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>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      // the super run call will do this for us.<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      super.run();<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    } finally {<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      if (this.clusterSchemaService != null) {<a name="line.576"></a>
-<span class="sourceLineNo">577</span>        // If on way out, then we are no longer active master.<a name="line.577"></a>
-<span class="sourceLineNo">578</span>        this.clusterSchemaService.stopAsync();<a name="line.578"></a>
-<span class="sourceLineNo">579</span>        try {<a name="line.579"></a>
-<span class="sourceLineNo">580</span>          this.clusterSchemaService.awaitTerminated(<a name="line.580"></a>
-<span class="sourceLineNo">581</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.581"></a>
-<span class="sourceLineNo">582</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        } catch (TimeoutException te) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.587"></a>
-<span class="sourceLineNo">588</span>    }<a name="line.588"></a>
-<span class="sourceLineNo">589</span>  }<a name="line.589"></a>
-<span class="sourceLineNo">590</span><a name="line.590"></a>
-<span class="sourceLineNo">591</span>  // return the actual infoPort, -1 means disable info server.<a name="line.591"></a>
-<span class="sourceLineNo">592</span>  private int putUpJettyServer() throws IOException {<a name="line.592"></a>
-<span class="sourceLineNo">593</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<a name="line.593"></a>
-<span class="sourceLineNo">594</span>      return -1;<a name="line.594"></a>
-<span class="sourceLineNo">595</span>    }<a name="line.595"></a>
-<span class="sourceLineNo">596</span>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.596"></a>
-<span class="sourceLineNo">597</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.597"></a>
-<span class="sourceLineNo">598</span>    // -1 is for disabling info server, so no redirecting<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.599"></a>
-<span class="sourceLineNo">600</span>      return -1;<a name="line.600"></a>
-<span class="sourceLineNo">601</span>    }<a name="line.601"></a>
-<span class="sourceLineNo">602</span>    if(infoPort == infoServer.getPort()) {<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      return infoPort;<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    }<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.606"></a>
-<span class="sourceLineNo">607</span>      String msg =<a 

<TRUNCATED>