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/06/26 15:42:50 UTC

[01/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Repository: hbase-site
Updated Branches:
  refs/heads/asf-site 51632cc2b -> eab0a9600


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
new file mode 100644
index 0000000..60b1387
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
@@ -0,0 +1,191 @@
+<!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 or more contributor license<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * agreements. See the NOTICE file distributed with this work for additional information regarding<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * "License"); you may not use this file except in compliance with the License. You may obtain a<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * law or agreed to in writing, software distributed under the License is distributed on an "AS IS"<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * for the specific language governing permissions and limitations under the License.<a name="line.9"></a>
+<span class="sourceLineNo">010</span> */<a name="line.10"></a>
+<span class="sourceLineNo">011</span>package org.apache.hadoop.hbase.master;<a name="line.11"></a>
+<span class="sourceLineNo">012</span><a name="line.12"></a>
+<span class="sourceLineNo">013</span>import static org.junit.Assert.assertEquals;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import java.io.IOException;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import java.util.HashMap;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import java.util.List;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.conf.Configuration;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.zookeeper.KeeperException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.junit.AfterClass;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.BeforeClass;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.ClassRule;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.slf4j.Logger;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.slf4j.LoggerFactory;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>@Category({ MasterTests.class, MediumTests.class })<a name="line.42"></a>
+<span class="sourceLineNo">043</span>public class TestGetReplicationLoad {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  @ClassRule<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      HBaseClassTestRule.forClass(TestGetReplicationLoad.class);<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(TestGetReplicationLoad.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static MiniHBaseCluster cluster;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static HMaster master;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static HBaseTestingUtility TEST_UTIL;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public static class MyMaster extends HMaster {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    public MyMaster(Configuration conf) throws IOException, KeeperException, InterruptedException {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      super(conf);<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>    @Override<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    protected void tryRegionServerReport(long reportStartTime, long reportEndTime) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      // do nothing<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @BeforeClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void startCluster() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    LOG.info("Starting cluster");<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    TEST_UTIL = new HBaseTestingUtility();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    TEST_UTIL.startMiniCluster(1, 1, 1, null, TestMasterMetrics.MyMaster.class, null);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    cluster = TEST_UTIL.getHBaseCluster();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    LOG.info("Waiting for active/ready master");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    cluster.waitForActiveAndReadyMaster();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    master = cluster.getMaster();<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  @AfterClass<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static void after() throws Exception {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    if (TEST_UTIL != null) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      TEST_UTIL.shutdownMiniCluster();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  @Test<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public void testGetReplicationMetrics() throws Exception {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    String peer1 = "test1", peer2 = "test2";<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    long ageOfLastShippedOp = 2, replicationLag = 3, timeStampOfLastShippedOp = 4;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    int sizeOfLogQueue = 5;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    RegionServerStatusProtos.RegionServerReportRequest.Builder request =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        RegionServerStatusProtos.RegionServerReportRequest.newBuilder();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    ServerName serverName = cluster.getMaster(0).getServerName();<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    request.setServer(ProtobufUtil.toServerName(serverName));<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    ClusterStatusProtos.ReplicationLoadSource rload1 = ClusterStatusProtos.ReplicationLoadSource<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        .newBuilder().setPeerID(peer1).setAgeOfLastShippedOp(ageOfLastShippedOp)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        .setReplicationLag(replicationLag).setTimeStampOfLastShippedOp(timeStampOfLastShippedOp)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        .setSizeOfLogQueue(sizeOfLogQueue).build();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    ClusterStatusProtos.ReplicationLoadSource rload2 =<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        ClusterStatusProtos.ReplicationLoadSource.newBuilder().setPeerID(peer2)<a name="line.97"></a>
+<span class="sourceLineNo">098</span>            .setAgeOfLastShippedOp(ageOfLastShippedOp + 1).setReplicationLag(replicationLag + 1)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>            .setTimeStampOfLastShippedOp(timeStampOfLastShippedOp + 1)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>            .setSizeOfLogQueue(sizeOfLogQueue + 1).build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    ClusterStatusProtos.ServerLoad sl = ClusterStatusProtos.ServerLoad.newBuilder()<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        .addReplLoadSource(rload1).addReplLoadSource(rload2).build();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    request.setLoad(sl);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    master.getReplicationPeerManager().addPeer(peer1,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      ReplicationPeerConfig.newBuilder().setClusterKey("test").build(), true);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    master.getReplicationPeerManager().addPeer(peer2,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      ReplicationPeerConfig.newBuilder().setClusterKey("test").build(), true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    master.getMasterRpcServices().regionServerReport(null, request.build());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    HashMap&lt;String, List&lt;Pair&lt;ServerName, ReplicationLoadSource&gt;&gt;&gt; replicationLoad =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        master.getReplicationLoad(new ServerName[] { serverName });<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    assertEquals("peer size ", 2, replicationLoad.size());<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertEquals("load size ", 1, replicationLoad.get(peer1).size());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    assertEquals("log queue size of peer1", sizeOfLogQueue,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      replicationLoad.get(peer1).get(0).getSecond().getSizeOfLogQueue());<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    assertEquals("replication lag of peer2", replicationLag + 1,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      replicationLoad.get(peer2).get(0).getSecond().getReplicationLag());<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    master.stopMaster();<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[03/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
index 2cb897e..9091ed6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
@@ -84,330 +84,404 @@
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private static final byte[] bbb = Bytes.toBytes("bbb");<a name="line.77"></a>
 <span class="sourceLineNo">078</span>  private static final byte[] yyy = Bytes.toBytes("yyy");<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Rule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public TestName name = new TestName();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  protected byte[] getStartRow() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return bbb;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected byte[] getEndRow() {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return yyy;<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>  @After<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public void tearDown() throws Exception {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Test<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public void testGetBestLocations() throws IOException {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    Configuration conf = UTIL.getConfiguration();<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Assert.assertEquals(null,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    VALIDATION_ERROR<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static class TestTableSnapshotMapper<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        Context context) throws IOException, InterruptedException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      verifyRowFromMap(key, value);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      context.write(key, NullWritable.get());<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>  public static class TestTableSnapshotReducer<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>       Context context) throws IOException, InterruptedException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      rowTracker.addRow(key.get());<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>    protected void cleanup(Context context) throws IOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        InterruptedException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      rowTracker.validate();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Test<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    setupCluster();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    String snapshotName = "foo";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      Assert.assertEquals(<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Assert.assertEquals(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        "Snapshot job should not use BucketCache.",<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      UTIL.deleteTable(tableName);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      tearDownCluster();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>  @Override<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      NullWritable.class, job, false, tmpTableDir);<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 void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    setupCluster();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    try {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      createTableAndSnapshot(<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Configuration conf = util.getConfiguration();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Job job = new Job(conf);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.231"></a>
-<span class="sourceLineNo">232</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>                numSplitsPerRegion);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      } else {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>                NullWritable.class, job, false, tmpTableDir);<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>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.240"></a>
+<span class="sourceLineNo">079</span>  private static final byte[] bbc = Bytes.toBytes("bbc");<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final byte[] yya = Bytes.toBytes("yya");<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Rule<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public TestName name = new TestName();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected byte[] getStartRow() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return bbb;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  protected byte[] getEndRow() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return yyy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @After<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public void tearDown() throws Exception {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Test<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public void testGetBestLocations() throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    Configuration conf = UTIL.getConfiguration();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Assert.assertEquals(null,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    VALIDATION_ERROR<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>  public static class TestTableSnapshotMapper<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        Context context) throws IOException, InterruptedException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      verifyRowFromMap(key, value);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      context.write(key, NullWritable.get());<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><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public static class TestTableSnapshotReducer<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       Context context) throws IOException, InterruptedException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      rowTracker.addRow(key.get());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    protected void cleanup(Context context) throws IOException,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        InterruptedException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      rowTracker.validate();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Test<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    setupCluster();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    String snapshotName = "foo";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      Assert.assertEquals(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      Assert.assertEquals(<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        "Snapshot job should not use BucketCache.",<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    } finally {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      UTIL.deleteTable(tableName);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      tearDownCluster();<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>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      NullWritable.class, job, false, tmpTableDir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  public void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    setupCluster();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      createTableAndSnapshot(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Configuration conf = util.getConfiguration();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Job job = new Job(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>                numSplitsPerRegion);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                NullWritable.class, job, false, tmpTableDir);<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>    } finally {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      util.deleteTable(tableName);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      tearDownCluster();<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>  @Test<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setupCluster();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String snapshotName = "testSnapshotBug";<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        UTIL.deleteTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">242</span>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      util.deleteTable(tableName);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      tearDownCluster();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testWithMockedMapReduceWithSplitsPerRegion() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    setupCluster();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      UTIL.createTable(tableName, FAMILIES);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      Admin admin = UTIL.getAdmin();<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // put some stuff in the table<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      UTIL.loadTable(table, FAMILIES);<a name="line.264"></a>
+<span class="sourceLineNo">259</span>      Configuration conf = UTIL.getConfiguration();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      Job job = new Job(conf);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // test scan with startRow and stopRow<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      Scan scan = new Scan(bbc, yya);<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // split to 2 regions<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.268"></a>
+<span class="sourceLineNo">266</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.268"></a>
 <span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        null, snapshotName, rootDir, fs, true);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>      // load different values<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // cause flush to create new files in the region<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      admin.flush(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      table.close();<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // limit the scan<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        tmpTableDir);<a name="line.291"></a>
+<span class="sourceLineNo">270</span>      verifyWithMockedMapReduce(job, 10, 40, bbc, yya);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    } finally {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      UTIL.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      tearDownCluster();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testWithMockedMapReduceWithNoStartRowStopRow() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    setupCluster();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Configuration conf = UTIL.getConfiguration();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      Job job = new Job(conf);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // test scan without startRow and stopRow<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      Scan scan2 = new Scan();<a name="line.291"></a>
 <span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      UTIL.deleteTable(tableName);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      tearDownCluster();<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 void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      byte[] startRow, byte[] stopRow)<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      throws IOException, InterruptedException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.305"></a>
+<span class="sourceLineNo">293</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan2,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      verifyWithMockedMapReduce(job, 10, 50, HConstants.EMPTY_START_ROW,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        HConstants.EMPTY_START_ROW);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    } finally {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      UTIL.deleteTable(tableName);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      tearDownCluster();<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>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        new HBaseTestingUtility.SeenRowTracker(startRow, stopRow);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    boolean localityEnabled =<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // validate input split<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      InputSplit split = splits.get(i);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      if (localityEnabled) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      } else {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<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>      // validate record reader<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      rr.initialize(split, taskAttemptContext);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      // validate we can read all the data back<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      while (rr.nextKeyValue()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        byte[] row = rr.getCurrentKey().get();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // validate all rows are seen<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    rowTracker.validate();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">307</span>  @Test<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    setupCluster();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    String snapshotName = "testSnapshotBug";<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        UTIL.deleteTable(tableName);<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>      UTIL.createTable(tableName, FAMILIES);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Admin admin = UTIL.getAdmin();<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      // put some stuff in the table<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      UTIL.loadTable(table, FAMILIES);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      // split to 2 regions<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        null, snapshotName, rootDir, fs, true);<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      // load different values<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      // cause flush to create new files in the region<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      admin.flush(tableName);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      table.close();<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // limit the scan<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<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>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<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>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    LOG.info("testing with MapReduce");<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("create the table and snapshot");<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.363"></a>
+<span class="sourceLineNo">347</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        tmpTableDir);<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    } finally {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      UTIL.deleteTable(tableName);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      tearDownCluster();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      byte[] startRow, byte[] stopRow)<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      throws IOException, InterruptedException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (shutdownCluster) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      LOG.info("shutting down hbase cluster.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      util.shutdownMiniHBaseCluster();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">365</span>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    HBaseTestingUtility.SeenRowTracker rowTracker = new HBaseTestingUtility.SeenRowTracker(startRow,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        stopRow.length &gt; 0 ? stopRow : Bytes.toBytes("\uffff"));<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      // create the job<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Job job = new Job(util.getConfiguration());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>      job.setJarByClass(util.getClass());<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              TestTableSnapshotInputFormat.class);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.382"></a>
-<span class="sourceLineNo">383</span>                numSplitsPerRegion);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.386"></a>
-<span class="sourceLineNo">387</span>                NullWritable.class, job, true, tableDir);<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>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      job.setNumReduceTasks(1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (!shutdownCluster) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        util.deleteTable(tableName);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>}<a name="line.402"></a>
+<span class="sourceLineNo">370</span>    boolean localityEnabled =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // validate input split<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      InputSplit split = splits.get(i);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      TableSnapshotRegionSplit snapshotRegionSplit = (TableSnapshotRegionSplit) split;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (localityEnabled) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      } else {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      Scan scan =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          TableMapReduceUtil.convertStringToScan(snapshotRegionSplit.getDelegate().getScan());<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (startRow.length &gt; 0) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        Assert.assertTrue(<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          Bytes.toStringBinary(startRow) + " should &lt;= " + Bytes.toStringBinary(scan.getStartRow()),<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          Bytes.compareTo(startRow, scan.getStartRow()) &lt;= 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (stopRow.length &gt; 0) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        Assert.assertTrue(<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          Bytes.toStringBinary(stopRow) + " should &gt;= " + Bytes.toStringBinary(scan.getStopRow()),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          Bytes.compareTo(stopRow, scan.getStopRow()) &gt;= 0);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Assert.assertTrue("startRow should &lt; stopRow",<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        Bytes.compareTo(scan.getStartRow(), scan.getStopRow()) &lt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // validate record reader<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      rr.initialize(split, taskAttemptContext);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // validate we can read all the data back<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      while (rr.nextKeyValue()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        byte[] row = rr.getCurrentKey().get();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // validate all rows are seen<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    rowTracker.validate();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    LOG.info("testing with MapReduce");<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    LOG.info("create the table and snapshot");<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (shutdownCluster) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      LOG.info("shutting down hbase cluster.");<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      util.shutdownMiniHBaseCluster();<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>    try {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      // create the job<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      Job job = new Job(util.getConfiguration());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      job.setJarByClass(util.getClass());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              TestTableSnapshotInputFormat.class);<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.456"></a>
+<span class="sourceLineNo">457</span>                numSplitsPerRegion);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                NullWritable.class, job, true, tableDir);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      job.setNumReduceTasks(1);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } finally {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (!shutdownCluster) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        util.deleteTable(tableName);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 


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

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.DirScanPool.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.DirScanPool.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.DirScanPool.html
index f5ac8fc..9931529 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.DirScanPool.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.DirScanPool.html
@@ -280,309 +280,303 @@
 <span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        POOL.latchCountUp();<a name="line.273"></a>
 <span class="sourceLineNo">274</span>        if (runCleaner()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          if (LOG.isTraceEnabled()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        } else {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          if (LOG.isTraceEnabled()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.trace("WALs outstanding under {}", oldFileDir);<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>      } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        POOL.latchCountDown();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (LOG.isTraceEnabled()) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private void preRunCleaner() {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<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>  public Boolean runCleaner() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    preRunCleaner();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    POOL.submit(task);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    return task.join();<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>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Sort the given list in (descending) order of the space each element takes<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // no need to sort for empty or single directory<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      return;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      @Override<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<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>      private long getSpace(FileStatus f) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        Long cached = directorySpaces.get(f);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (cached != null) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          return cached;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        try {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          long space =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          directorySpaces.put(f, space);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          return space;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } catch (IOException e) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          return -1;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    });<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * necessary.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @return true iff successfully deleted all files<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (files == null) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return true;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // first check to see if the path is valid<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    for (FileStatus file : files) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (validate(file.getPath())) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        validFiles.add(file);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // check each of the cleaners for the valid files<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (T cleaner : cleanersChain) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.375"></a>
-<span class="sourceLineNo">376</span>            + this.oldFileDir);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return false;<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>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>      // trace which cleaner is holding on to each file<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (LOG.isTraceEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        for (FileStatus file : deletableValidFiles) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          if (!filteredFileSet.contains(file)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return deleteFiles(filesToDelete) == files.size();<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>   * Delete the given files<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param filesToDelete files to delete<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @return number of deleted files<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int deletedFileCount = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    for (FileStatus file : filesToDelete) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Path filePath = file.getPath();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      try {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        boolean success = this.fs.delete(filePath, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        if (success) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          deletedFileCount++;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      } catch (IOException e) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        e = e instanceof RemoteException ?<a name="line.418"></a>
-<span class="sourceLineNo">419</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        LOG.warn("Error while deleting: " + filePath, e);<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>    return deletedFileCount;<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>  @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public synchronized void cleanup() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (T lc : this.cleanersChain) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      try {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        lc.stop("Exiting");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      } catch (Throwable t) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        LOG.warn("Stopping", t);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @VisibleForTesting<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  int getChorePoolSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return POOL.size;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * @param enabled<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public boolean setEnabled(final boolean enabled) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return this.enabled.getAndSet(enabled);<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 boolean getEnabled() { return this.enabled.get();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private interface Action&lt;T&gt; {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    T act() throws IOException;<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>  /**<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    private final Path dir;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    private final boolean root;<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      this.dir = dir;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      this.root = root;<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>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    protected Boolean compute() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      LOG.debug("Cleaning under {}", dir);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      List&lt;FileStatus&gt; subDirs;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      List&lt;FileStatus&gt; files;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      try {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        // which will fall through to succeeding.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      } catch (IOException ioe) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        return false;<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>      boolean nullSubDirs = subDirs == null;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (nullSubDirs) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (files == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        LOG.trace("There is no file under {}", dir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (!nullSubDirs) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        sortByConsumedSpace(subDirs);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        for (FileStatus subdir : subDirs) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          tasks.add(task);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          task.fork();<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      boolean result = true;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // it is not the root dir, then task will try to delete it.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (result &amp;&amp; !root) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return result;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>     * Get FileStatus with filter.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>     * even though status is empty but not null.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     * @param function a filter function<a name="line.522"></a>
-<span class="sourceLineNo">523</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.523"></a>
-<span class="sourceLineNo">524</span>     * @throws IOException if there's an error other than dir not existing<a name="line.524"></a>
-<span class="sourceLineNo">525</span>     */<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * Perform a delete on a specified type.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * @param deletion a delete<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * @return true if it deleted successfully, false otherwise<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      boolean deleted;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      try {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        deleted = deletion.act();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        // message below.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            "exception details at TRACE.", dir);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        deleted = false;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      } catch (IOException ioe) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.550"></a>
-<span class="sourceLineNo">551</span>                  "happening, use following exception when asking on mailing list.",<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  type, dir, ioe);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        deleted = false;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      return deleted;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    /**<a name="line.559"></a>
-<span class="sourceLineNo">560</span>     * Get cleaner results of subdirs.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>     * @param tasks subdirs cleaner tasks<a name="line.561"></a>
-<span class="sourceLineNo">562</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.562"></a>
-<span class="sourceLineNo">563</span>     * @throws IOException something happen during computation<a name="line.563"></a>
-<span class="sourceLineNo">564</span>     */<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      boolean cleaned = true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        for (CleanerTask task : tasks) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          cleaned &amp;= task.get();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        throw new IOException(e);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return cleaned;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>}<a name="line.577"></a>
+<span class="sourceLineNo">275</span>          LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } else {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.trace("WALs outstanding under {}", oldFileDir);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } finally {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        POOL.latchCountDown();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } else {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void preRunCleaner() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public Boolean runCleaner() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    preRunCleaner();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    POOL.submit(task);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return task.join();<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>   * Sort the given list in (descending) order of the space each element takes<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // no need to sort for empty or single directory<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      return;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      private long getSpace(FileStatus f) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        Long cached = directorySpaces.get(f);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (cached != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          return cached;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        try {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          long space =<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          directorySpaces.put(f, space);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          return space;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          return -1;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    });<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * necessary.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true iff successfully deleted all files<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (files == null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return true;<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>    // first check to see if the path is valid<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (FileStatus file : files) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (validate(file.getPath())) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        validFiles.add(file);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // check each of the cleaners for the valid files<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    for (T cleaner : cleanersChain) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            + this.oldFileDir);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        return false;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // trace which cleaner is holding on to each file<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (LOG.isTraceEnabled()) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        for (FileStatus file : deletableValidFiles) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          if (!filteredFileSet.contains(file)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return deleteFiles(filesToDelete) == files.size();<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>  /**<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * Delete the given files<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param filesToDelete files to delete<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @return number of deleted files<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   */<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    int deletedFileCount = 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (FileStatus file : filesToDelete) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      Path filePath = file.getPath();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        boolean success = this.fs.delete(filePath, false);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (success) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          deletedFileCount++;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.408"></a>
+<span class="sourceLineNo">409</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      } catch (IOException e) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        e = e instanceof RemoteException ?<a name="line.412"></a>
+<span class="sourceLineNo">413</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.warn("Error while deleting: " + filePath, e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    return deletedFileCount;<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>  @Override<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public synchronized void cleanup() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    for (T lc : this.cleanersChain) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      try {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        lc.stop("Exiting");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      } catch (Throwable t) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        LOG.warn("Stopping", t);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int getChorePoolSize() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return POOL.size;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @param enabled<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public boolean setEnabled(final boolean enabled) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.enabled.getAndSet(enabled);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public boolean getEnabled() { return this.enabled.get();<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>  private interface Action&lt;T&gt; {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    T act() throws IOException;<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    private final Path dir;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    private final boolean root;<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      this.dir = dir;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      this.root = root;<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>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    protected Boolean compute() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      LOG.trace("Cleaning under {}", dir);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      List&lt;FileStatus&gt; subDirs;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      List&lt;FileStatus&gt; files;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      try {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // which will fall through to succeeding.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      } catch (IOException ioe) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      boolean nullSubDirs = subDirs == null;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      if (nullSubDirs) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (files == null) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        LOG.trace("There is no file under {}", dir);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      if (!nullSubDirs) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        sortByConsumedSpace(subDirs);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        for (FileStatus subdir : subDirs) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          tasks.add(task);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          task.fork();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>      boolean result = true;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      // it is not the root dir, then task will try to delete it.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      if (result &amp;&amp; !root) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      return result;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>     * Get FileStatus with filter.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.514"></a>
+<span class="sourceLineNo">515</span>     * even though status is empty but not null.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>     * @param function a filter function<a name="line.516"></a>
+<span class="sourceLineNo">517</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.517"></a>
+<span class="sourceLineNo">518</span>     * @throws IOException if there's an error other than dir not existing<a name="line.518"></a>
+<span class="sourceLineNo">519</span>     */<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    /**<a name="line.524"></a>
+<span class="sourceLineNo">525</span>     * Perform a delete on a specified type.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>     * @param deletion a delete<a name="line.526"></a>
+<span class="sourceLineNo">527</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.527"></a>
+<span class="sourceLineNo">528</span>     * @return true if it deleted successfully, false otherwise<a name="line.528"></a>
+<span class="sourceLineNo">529</span>     */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      boolean deleted;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      try {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        deleted = deletion.act();<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        // message below.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            "exception details at TRACE.", dir);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        deleted = false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      } catch (IOException ioe) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  "happening, use following exception when asking on mailing list.",<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                  type, dir, ioe);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        deleted = false;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      return deleted;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    /**<a name="line.553"></a>
+<span class="sourceLineNo">554</span>     * Get cleaner results of subdirs.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>     * @param tasks subdirs cleaner tasks<a name="line.555"></a>
+<span class="sourceLineNo">556</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.556"></a>
+<span class="sourceLineNo">557</span>     * @throws IOException something happen during computation<a name="line.557"></a>
+<span class="sourceLineNo">558</span>     */<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      boolean cleaned = true;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        for (CleanerTask task : tasks) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          cleaned &amp;= task.get();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        }<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        throw new IOException(e);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      return cleaned;<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>
 
 
 


[15/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index 83a993e..29b47a3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -16,390 +16,396 @@
 <span class="sourceLineNo">008</span>// 33, 1<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import java.io.IOException;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 34, 1<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 35, 1<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 36, 1<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 37, 1<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.HConstants;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 38, 1<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 39, 1<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.21"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>// 40, 1<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>// 41, 1<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>// 42, 1<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.27"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>// 43, 1<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.29"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 44, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 45, 1<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.33"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>// 46, 1<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.35"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>// 47, 1<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.37"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>// 48, 1<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.39"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>// 49, 1<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.41"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>// 50, 1<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.43"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>// 51, 1<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.45"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>// 52, 1<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.47"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>// 53, 1<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.49"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>// 54, 1<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.51"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>// 55, 1<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.53"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>// 56, 1<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.55"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>// 57, 1<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.57"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>// 58, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.util.StringUtils;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>@org.jamon.annotations.Template(<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  requiredArguments = {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  optionalArguments = {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.74"></a>
-<span class="sourceLineNo">075</span>public class MasterStatusTmpl<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  extends org.jamon.AbstractTemplateProxy<a name="line.76"></a>
-<span class="sourceLineNo">077</span>{<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  <a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>     super(p_manager);<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>  protected MasterStatusTmpl(String p_path)<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    super(p_path);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  <a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public MasterStatusTmpl()<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  <a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public interface Intf<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.95"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>// 59, 1<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>// 60, 1<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>// 61, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>@org.jamon.annotations.Template(<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  requiredArguments = {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  optionalArguments = {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.80"></a>
+<span class="sourceLineNo">081</span>public class MasterStatusTmpl<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  extends org.jamon.AbstractTemplateProxy<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>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>     super(p_manager);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  <a name="line.89"></a>
+<span class="sourceLineNo">090</span>  protected MasterStatusTmpl(String p_path)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    super(p_path);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  <a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public MasterStatusTmpl()<a name="line.95"></a>
 <span class="sourceLineNo">096</span>  {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    <a name="line.97"></a>
-<span class="sourceLineNo">098</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // 20, 1<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public void setMaster(HMaster master)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      // 20, 1<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      m_master = master;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public HMaster getMaster()<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return m_master;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    private HMaster m_master;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // 29, 1<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.116"></a>
+<span class="sourceLineNo">097</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  <a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public interface Intf<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    <a name="line.103"></a>
+<span class="sourceLineNo">104</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // 20, 1<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    public void setMaster(HMaster master)<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // 20, 1<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      m_master = master;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    public HMaster getMaster()<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      // 29, 1<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      m_assignmentManager = assignmentManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      m_assignmentManager__IsNotDefault = true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public AssignmentManager getAssignmentManager()<a name="line.122"></a>
+<span class="sourceLineNo">118</span>      return m_master;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    private HMaster m_master;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // 29, 1<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      return m_assignmentManager;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    private AssignmentManager m_assignmentManager;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      return m_assignmentManager__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // 25, 1<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.133"></a>
+<span class="sourceLineNo">124</span>      // 29, 1<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      m_assignmentManager = assignmentManager;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      m_assignmentManager__IsNotDefault = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    public AssignmentManager getAssignmentManager()<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return m_assignmentManager;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    private AssignmentManager m_assignmentManager;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      // 25, 1<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public boolean getCatalogJanitorEnabled()<a name="line.139"></a>
+<span class="sourceLineNo">135</span>      return m_assignmentManager__IsNotDefault;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // 25, 1<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return m_catalogJanitorEnabled;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    private boolean m_catalogJanitorEnabled;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // 24, 1<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.150"></a>
+<span class="sourceLineNo">141</span>      // 25, 1<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    public boolean getCatalogJanitorEnabled()<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return m_catalogJanitorEnabled;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private boolean m_catalogJanitorEnabled;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      // 24, 1<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      m_deadServers = deadServers;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      m_deadServers__IsNotDefault = true;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.156"></a>
+<span class="sourceLineNo">152</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // 24, 1<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return m_deadServers;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean getDeadServers__IsNotDefault()<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return m_deadServers__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    private boolean m_deadServers__IsNotDefault;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // 26, 1<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    public void setFilter(String filter)<a name="line.167"></a>
+<span class="sourceLineNo">158</span>      // 24, 1<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      m_deadServers = deadServers;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      m_deadServers__IsNotDefault = true;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return m_deadServers;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    public boolean getDeadServers__IsNotDefault()<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      // 26, 1<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      m_filter = filter;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      m_filter__IsNotDefault = true;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public String getFilter()<a name="line.173"></a>
+<span class="sourceLineNo">169</span>      return m_deadServers__IsNotDefault;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    private boolean m_deadServers__IsNotDefault;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // 26, 1<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    public void setFilter(String filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      return m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    private String m_filter;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public boolean getFilter__IsNotDefault()<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    private boolean m_filter__IsNotDefault;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // 27, 1<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public void setFormat(String format)<a name="line.184"></a>
+<span class="sourceLineNo">175</span>      // 26, 1<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      m_filter = filter;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      m_filter__IsNotDefault = true;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public String getFilter()<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return m_filter;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    private String m_filter;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public boolean getFilter__IsNotDefault()<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // 27, 1<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      m_format = format;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      m_format__IsNotDefault = true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    public String getFormat()<a name="line.190"></a>
+<span class="sourceLineNo">186</span>      return m_filter__IsNotDefault;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private boolean m_filter__IsNotDefault;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // 27, 1<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    public void setFormat(String format)<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      return m_format;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    private String m_format;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    public boolean getFormat__IsNotDefault()<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return m_format__IsNotDefault;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    private boolean m_format__IsNotDefault;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // 21, 1<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.201"></a>
+<span class="sourceLineNo">192</span>      // 27, 1<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      m_format = format;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      m_format__IsNotDefault = true;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public String getFormat()<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return m_format;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    private String m_format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public boolean getFormat__IsNotDefault()<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // 21, 1<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      m_frags = frags;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      m_frags__IsNotDefault = true;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.207"></a>
+<span class="sourceLineNo">203</span>      return m_format__IsNotDefault;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    private boolean m_format__IsNotDefault;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // 21, 1<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.207"></a>
 <span class="sourceLineNo">208</span>    {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return m_frags;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean getFrags__IsNotDefault()<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return m_frags__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    private boolean m_frags__IsNotDefault;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    // 22, 1<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.218"></a>
+<span class="sourceLineNo">209</span>      // 21, 1<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      m_frags = frags;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      m_frags__IsNotDefault = true;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return m_frags;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public boolean getFrags__IsNotDefault()<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // 22, 1<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      m_metaLocation = metaLocation;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      m_metaLocation__IsNotDefault = true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    public ServerName getMetaLocation()<a name="line.224"></a>
+<span class="sourceLineNo">220</span>      return m_frags__IsNotDefault;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    private boolean m_frags__IsNotDefault;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    // 22, 1<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return m_metaLocation;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private ServerName m_metaLocation;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return m_metaLocation__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    // 28, 1<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    public void setServerManager(ServerManager serverManager)<a name="line.235"></a>
+<span class="sourceLineNo">226</span>      // 22, 1<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      m_metaLocation = metaLocation;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      m_metaLocation__IsNotDefault = true;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public ServerName getMetaLocation()<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return m_metaLocation;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    private ServerName m_metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      // 28, 1<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      m_serverManager = serverManager;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      m_serverManager__IsNotDefault = true;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public ServerManager getServerManager()<a name="line.241"></a>
+<span class="sourceLineNo">237</span>      return m_metaLocation__IsNotDefault;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    // 28, 1<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public void setServerManager(ServerManager serverManager)<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return m_serverManager;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private ServerManager m_serverManager;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public boolean getServerManager__IsNotDefault()<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return m_serverManager__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private boolean m_serverManager__IsNotDefault;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // 23, 1<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.252"></a>
+<span class="sourceLineNo">243</span>      // 28, 1<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      m_serverManager = serverManager;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      m_serverManager__IsNotDefault = true;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public ServerManager getServerManager()<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return m_serverManager;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    private ServerManager m_serverManager;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    public boolean getServerManager__IsNotDefault()<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // 23, 1<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      m_servers = servers;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      m_servers__IsNotDefault = true;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    public List&lt;ServerName&gt; getServers()<a name="line.258"></a>
+<span class="sourceLineNo">254</span>      return m_serverManager__IsNotDefault;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    private boolean m_serverManager__IsNotDefault;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // 23, 1<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      return m_servers;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private List&lt;ServerName&gt; m_servers;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public boolean getServers__IsNotDefault()<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return m_servers__IsNotDefault;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    private boolean m_servers__IsNotDefault;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return new ImplData();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Override public ImplData getImplData()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return (ImplData) super.getImplData();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  <a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected AssignmentManager assignmentManager;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.280"></a>
+<span class="sourceLineNo">260</span>      // 23, 1<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      m_servers = servers;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      m_servers__IsNotDefault = true;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public List&lt;ServerName&gt; getServers()<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return m_servers;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private List&lt;ServerName&gt; m_servers;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public boolean getServers__IsNotDefault()<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      return m_servers__IsNotDefault;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private boolean m_servers__IsNotDefault;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return new ImplData();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @Override public ImplData getImplData()<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return this;<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>  protected String filter;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    (getImplData()).setFilter(p_filter);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return this;<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>  protected String format;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    (getImplData()).setFormat(p_format);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    (getImplData()).setFrags(p_frags);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    return this;<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>  protected ServerName metaLocation;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    return this;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  <a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected ServerManager serverManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return this;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  <a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected List&lt;ServerName&gt; servers;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    (getImplData()).setServers(p_servers);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return this;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  <a name="line.341"></a>
-<span class="sourceLineNo">342</span>  <a name="line.342"></a>
-<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    try<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      return p_class<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    catch (RuntimeException e)<a name="line.351"></a>
+<span class="sourceLineNo">282</span>    return (ImplData) super.getImplData();<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>  protected AssignmentManager assignmentManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return this;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  <a name="line.298"></a>
+<span class="sourceLineNo">299</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return this;<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>  protected String filter;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    (getImplData()).setFilter(p_filter);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    return this;<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>  protected String format;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    (getImplData()).setFormat(p_format);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    return this;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  <a name="line.319"></a>
+<span class="sourceLineNo">320</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    (getImplData()).setFrags(p_frags);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return this;<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>  protected ServerName metaLocation;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return this;<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>  protected ServerManager serverManager;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return this;<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>  protected List&lt;ServerName&gt; servers;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    (getImplData()).setServers(p_servers);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return this;<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>  @Override<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try<a name="line.351"></a>
 <span class="sourceLineNo">352</span>    {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      throw e;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    catch (Exception e)<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      throw new RuntimeException(e);<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>  @Override<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    return new org.jamon.AbstractRenderer() {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        throws java.io.IOException<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        render(jamonWriter, master);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    };<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  <a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    throws java.io.IOException<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    renderNoFlush(jamonWriter, master);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    jamonWriter.flush();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
+<span class="sourceLineNo">353</span>      return p_class<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    catch (RuntimeException e)<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw e;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    catch (Exception e)<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new RuntimeException(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  <a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return new org.jamon.AbstractRenderer() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      @Override<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        throws java.io.IOException<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        render(jamonWriter, master);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    };<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  <a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
 <span class="sourceLineNo">384</span>    throws java.io.IOException<a name="line.384"></a>
 <span class="sourceLineNo">385</span>  {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    ImplData implData = getImplData();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    implData.setMaster(master);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    instance.renderNoFlush(jamonWriter);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    reset();<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>  <a name="line.393"></a>
-<span class="sourceLineNo">394</span>}<a name="line.394"></a>
+<span class="sourceLineNo">386</span>    renderNoFlush(jamonWriter, master);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    jamonWriter.flush();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    throws java.io.IOException<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    ImplData implData = getImplData();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    implData.setMaster(master);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    instance.renderNoFlush(jamonWriter);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    reset();<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>}<a name="line.400"></a>
 
 
 


[04/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
index 2cb897e..9091ed6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
@@ -84,330 +84,404 @@
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private static final byte[] bbb = Bytes.toBytes("bbb");<a name="line.77"></a>
 <span class="sourceLineNo">078</span>  private static final byte[] yyy = Bytes.toBytes("yyy");<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Rule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public TestName name = new TestName();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  protected byte[] getStartRow() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return bbb;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected byte[] getEndRow() {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return yyy;<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>  @After<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public void tearDown() throws Exception {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Test<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public void testGetBestLocations() throws IOException {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    Configuration conf = UTIL.getConfiguration();<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Assert.assertEquals(null,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    VALIDATION_ERROR<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static class TestTableSnapshotMapper<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        Context context) throws IOException, InterruptedException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      verifyRowFromMap(key, value);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      context.write(key, NullWritable.get());<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>  public static class TestTableSnapshotReducer<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>       Context context) throws IOException, InterruptedException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      rowTracker.addRow(key.get());<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>    protected void cleanup(Context context) throws IOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        InterruptedException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      rowTracker.validate();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Test<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    setupCluster();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    String snapshotName = "foo";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      Assert.assertEquals(<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Assert.assertEquals(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        "Snapshot job should not use BucketCache.",<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      UTIL.deleteTable(tableName);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      tearDownCluster();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>  @Override<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      NullWritable.class, job, false, tmpTableDir);<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 void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    setupCluster();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    try {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      createTableAndSnapshot(<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Configuration conf = util.getConfiguration();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Job job = new Job(conf);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.231"></a>
-<span class="sourceLineNo">232</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>                numSplitsPerRegion);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      } else {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>                NullWritable.class, job, false, tmpTableDir);<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>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.240"></a>
+<span class="sourceLineNo">079</span>  private static final byte[] bbc = Bytes.toBytes("bbc");<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final byte[] yya = Bytes.toBytes("yya");<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Rule<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public TestName name = new TestName();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected byte[] getStartRow() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return bbb;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  protected byte[] getEndRow() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return yyy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @After<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public void tearDown() throws Exception {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Test<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public void testGetBestLocations() throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    Configuration conf = UTIL.getConfiguration();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Assert.assertEquals(null,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    VALIDATION_ERROR<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>  public static class TestTableSnapshotMapper<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        Context context) throws IOException, InterruptedException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      verifyRowFromMap(key, value);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      context.write(key, NullWritable.get());<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><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public static class TestTableSnapshotReducer<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       Context context) throws IOException, InterruptedException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      rowTracker.addRow(key.get());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    protected void cleanup(Context context) throws IOException,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        InterruptedException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      rowTracker.validate();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Test<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    setupCluster();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    String snapshotName = "foo";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      Assert.assertEquals(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      Assert.assertEquals(<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        "Snapshot job should not use BucketCache.",<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    } finally {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      UTIL.deleteTable(tableName);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      tearDownCluster();<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>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      NullWritable.class, job, false, tmpTableDir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  public void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    setupCluster();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      createTableAndSnapshot(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Configuration conf = util.getConfiguration();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Job job = new Job(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>                numSplitsPerRegion);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                NullWritable.class, job, false, tmpTableDir);<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>    } finally {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      util.deleteTable(tableName);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      tearDownCluster();<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>  @Test<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setupCluster();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String snapshotName = "testSnapshotBug";<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        UTIL.deleteTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">242</span>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      util.deleteTable(tableName);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      tearDownCluster();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testWithMockedMapReduceWithSplitsPerRegion() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    setupCluster();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      UTIL.createTable(tableName, FAMILIES);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      Admin admin = UTIL.getAdmin();<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // put some stuff in the table<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      UTIL.loadTable(table, FAMILIES);<a name="line.264"></a>
+<span class="sourceLineNo">259</span>      Configuration conf = UTIL.getConfiguration();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      Job job = new Job(conf);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // test scan with startRow and stopRow<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      Scan scan = new Scan(bbc, yya);<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // split to 2 regions<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.268"></a>
+<span class="sourceLineNo">266</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.268"></a>
 <span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        null, snapshotName, rootDir, fs, true);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>      // load different values<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // cause flush to create new files in the region<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      admin.flush(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      table.close();<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // limit the scan<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        tmpTableDir);<a name="line.291"></a>
+<span class="sourceLineNo">270</span>      verifyWithMockedMapReduce(job, 10, 40, bbc, yya);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    } finally {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      UTIL.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      tearDownCluster();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testWithMockedMapReduceWithNoStartRowStopRow() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    setupCluster();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Configuration conf = UTIL.getConfiguration();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      Job job = new Job(conf);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // test scan without startRow and stopRow<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      Scan scan2 = new Scan();<a name="line.291"></a>
 <span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      UTIL.deleteTable(tableName);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      tearDownCluster();<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 void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      byte[] startRow, byte[] stopRow)<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      throws IOException, InterruptedException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.305"></a>
+<span class="sourceLineNo">293</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan2,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      verifyWithMockedMapReduce(job, 10, 50, HConstants.EMPTY_START_ROW,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        HConstants.EMPTY_START_ROW);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    } finally {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      UTIL.deleteTable(tableName);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      tearDownCluster();<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>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        new HBaseTestingUtility.SeenRowTracker(startRow, stopRow);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    boolean localityEnabled =<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // validate input split<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      InputSplit split = splits.get(i);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      if (localityEnabled) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      } else {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<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>      // validate record reader<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      rr.initialize(split, taskAttemptContext);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      // validate we can read all the data back<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      while (rr.nextKeyValue()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        byte[] row = rr.getCurrentKey().get();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // validate all rows are seen<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    rowTracker.validate();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">307</span>  @Test<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    setupCluster();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    String snapshotName = "testSnapshotBug";<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        UTIL.deleteTable(tableName);<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>      UTIL.createTable(tableName, FAMILIES);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Admin admin = UTIL.getAdmin();<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      // put some stuff in the table<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      UTIL.loadTable(table, FAMILIES);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      // split to 2 regions<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        null, snapshotName, rootDir, fs, true);<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      // load different values<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      // cause flush to create new files in the region<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      admin.flush(tableName);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      table.close();<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // limit the scan<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<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>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<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>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    LOG.info("testing with MapReduce");<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("create the table and snapshot");<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.363"></a>
+<span class="sourceLineNo">347</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        tmpTableDir);<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    } finally {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      UTIL.deleteTable(tableName);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      tearDownCluster();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      byte[] startRow, byte[] stopRow)<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      throws IOException, InterruptedException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (shutdownCluster) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      LOG.info("shutting down hbase cluster.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      util.shutdownMiniHBaseCluster();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">365</span>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    HBaseTestingUtility.SeenRowTracker rowTracker = new HBaseTestingUtility.SeenRowTracker(startRow,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        stopRow.length &gt; 0 ? stopRow : Bytes.toBytes("\uffff"));<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      // create the job<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Job job = new Job(util.getConfiguration());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>      job.setJarByClass(util.getClass());<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              TestTableSnapshotInputFormat.class);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.382"></a>
-<span class="sourceLineNo">383</span>                numSplitsPerRegion);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.386"></a>
-<span class="sourceLineNo">387</span>                NullWritable.class, job, true, tableDir);<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>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      job.setNumReduceTasks(1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (!shutdownCluster) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        util.deleteTable(tableName);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>}<a name="line.402"></a>
+<span class="sourceLineNo">370</span>    boolean localityEnabled =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // validate input split<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      InputSplit split = splits.get(i);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      TableSnapshotRegionSplit snapshotRegionSplit = (TableSnapshotRegionSplit) split;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (localityEnabled) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      } else {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      Scan scan =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          TableMapReduceUtil.convertStringToScan(snapshotRegionSplit.getDelegate().getScan());<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (startRow.length &gt; 0) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        Assert.assertTrue(<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          Bytes.toStringBinary(startRow) + " should &lt;= " + Bytes.toStringBinary(scan.getStartRow()),<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          Bytes.compareTo(startRow, scan.getStartRow()) &lt;= 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (stopRow.length &gt; 0) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        Assert.assertTrue(<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          Bytes.toStringBinary(stopRow) + " should &gt;= " + Bytes.toStringBinary(scan.getStopRow()),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          Bytes.compareTo(stopRow, scan.getStopRow()) &gt;= 0);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Assert.assertTrue("startRow should &lt; stopRow",<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        Bytes.compareTo(scan.getStartRow(), scan.getStopRow()) &lt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // validate record reader<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      rr.initialize(split, taskAttemptContext);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // validate we can read all the data back<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      while (rr.nextKeyValue()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        byte[] row = rr.getCurrentKey().get();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // validate all rows are seen<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    rowTracker.validate();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    LOG.info("testing with MapReduce");<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    LOG.info("create the table and snapshot");<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (shutdownCluster) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      LOG.info("shutting down hbase cluster.");<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      util.shutdownMiniHBaseCluster();<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>    try {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      // create the job<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      Job job = new Job(util.getConfiguration());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      job.setJarByClass(util.getClass());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              TestTableSnapshotInputFormat.class);<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.456"></a>
+<span class="sourceLineNo">457</span>                numSplitsPerRegion);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                NullWritable.class, job, true, tableDir);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      job.setNumReduceTasks(1);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } finally {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (!shutdownCluster) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        util.deleteTable(tableName);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 


[26/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
index 7cea275..83e66fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
@@ -389,158 +389,169 @@
 <span class="sourceLineNo">381</span>                calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.381"></a>
 <span class="sourceLineNo">382</span><a name="line.382"></a>
 <span class="sourceLineNo">383</span>            Scan boundedScan = new Scan(scan);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>            boundedScan.setStartRow(sp[i]);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            boundedScan.setStopRow(sp[i + 1]);<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<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>      } else {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          List&lt;String&gt; hosts =<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    return splits;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * only when localityEnabled is true.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      throws IOException {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (localityEnabled) { // care block locality<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return getBestLocations(conf,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    } else { // do not care block locality<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      return null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * local.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * host with the best locality.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      numTopsAtMost = 1;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    locations.add(topHost.getHost());<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (top == 1) { // only care about the top host<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return locations;<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>    // When top &gt;= 2,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    double cutoffMultiplier<a name="line.453"></a>
-<span class="sourceLineNo">454</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.456"></a>
+<span class="sourceLineNo">384</span>            if (scan.getStartRow().length == 0) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              boundedScan.withStartRow(sp[i]);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>            } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>              boundedScan.withStartRow(<a name="line.387"></a>
+<span class="sourceLineNo">388</span>                Bytes.compareTo(scan.getStartRow(), sp[i]) &gt; 0 ? scan.getStartRow() : sp[i]);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>            if (scan.getStopRow().length == 0) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              boundedScan.withStopRow(sp[i + 1]);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              boundedScan.withStopRow(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                Bytes.compareTo(scan.getStopRow(), sp[i + 1]) &lt; 0 ? scan.getStopRow() : sp[i + 1]);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          List&lt;String&gt; hosts =<a name="line.404"></a>
+<span class="sourceLineNo">405</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    return splits;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * only when localityEnabled is true.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   */<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    if (localityEnabled) { // care block locality<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      return getBestLocations(conf,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    } else { // do not care block locality<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return null;<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * local.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * host with the best locality.<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      numTopsAtMost = 1;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    locations.add(topHost.getHost());<a name="line.456"></a>
 <span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        locations.add(hostAndWeights[i].getHost());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      } else {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        // As hostAndWeights is in descending order,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        break;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return locations;<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>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private static String getSnapshotName(Configuration conf) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    if (snapshotName == null) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return snapshotName;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param conf the job to configuration<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param snapshotName the name of the snapshot to read from<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @throws IOException if an error occurs<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    setInput(conf, snapshotName, restoreDir, null, 1);<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>  /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param conf the job to configure<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param snapshotName the name of the snapshot to read from<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * After the job is finished, restoreDir can be deleted.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @throws IOException if an error occurs<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.510"></a>
-<span class="sourceLineNo">511</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    }<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    if (splitAlgo != null) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // TODO: restore from record readers to parallelize.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>}<a name="line.535"></a>
+<span class="sourceLineNo">458</span>    if (top == 1) { // only care about the top host<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return locations;<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>    // When top &gt;= 2,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    double cutoffMultiplier<a name="line.464"></a>
+<span class="sourceLineNo">465</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        locations.add(hostAndWeights[i].getHost());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      } else {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // As hostAndWeights is in descending order,<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        break;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    return locations;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>  private static String getSnapshotName(Configuration conf) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if (snapshotName == null) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    return snapshotName;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>  /**<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param conf the job to configuration<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @param snapshotName the name of the snapshot to read from<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * @throws IOException if an error occurs<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      throws IOException {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    setInput(conf, snapshotName, restoreDir, null, 1);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param conf the job to configure<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param snapshotName the name of the snapshot to read from<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * After the job is finished, restoreDir can be deleted.<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * @throws IOException if an error occurs<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          throws IOException {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    if (splitAlgo != null) {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    // TODO: restore from record readers to parallelize.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<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>
 
 
 


[29/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
index ec479b9..cfefc40 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
@@ -350,494 +350,487 @@
 <span class="sourceLineNo">342</span>  public void saslReadAndProcess(ByteBuff saslToken) throws IOException,<a name="line.342"></a>
 <span class="sourceLineNo">343</span>      InterruptedException {<a name="line.343"></a>
 <span class="sourceLineNo">344</span>    if (saslContextEstablished) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      if (RpcServer.LOG.isTraceEnabled())<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        RpcServer.LOG.trace("Have read input token of size " + saslToken.limit()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>            + " for processing by saslServer.unwrap()");<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!useWrap) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        processOneRpc(saslToken);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      } else {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        byte[] b = saslToken.hasArray() ? saslToken.array() : saslToken.toBytes();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        byte [] plaintextData;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        if (useCryptoAesWrap) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          // unwrap with CryptoAES<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          plaintextData = cryptoAES.unwrap(b, 0, b.length);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        } else {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          plaintextData = saslServer.unwrap(b, 0, b.length);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        processUnwrappedData(plaintextData);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    } else {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      byte[] replyToken;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      try {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        if (saslServer == null) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          saslServer =<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              new HBaseSaslRpcServer(authMethod, rpcServer.saslProps, rpcServer.secretManager);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>          if (RpcServer.LOG.isDebugEnabled()) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>            RpcServer.LOG<a name="line.369"></a>
-<span class="sourceLineNo">370</span>                .debug("Created SASL server with mechanism = " + authMethod.getMechanismName());<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>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>          RpcServer.LOG.debug("Have read input token of size " + saslToken.limit()<a name="line.374"></a>
-<span class="sourceLineNo">375</span>              + " for processing by saslServer.evaluateResponse()");<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        replyToken = saslServer<a name="line.377"></a>
-<span class="sourceLineNo">378</span>            .evaluateResponse(saslToken.hasArray() ? saslToken.array() : saslToken.toBytes());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      } catch (IOException e) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        IOException sendToClient = e;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        Throwable cause = e;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        while (cause != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>          if (cause instanceof InvalidToken) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>            sendToClient = (InvalidToken) cause;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            break;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          cause = cause.getCause();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        doRawSaslReply(SaslStatus.ERROR, null, sendToClient.getClass().getName(),<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          sendToClient.getLocalizedMessage());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        this.rpcServer.metrics.authenticationFailure();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String clientIP = this.toString();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        // attempting user could be null<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        RpcServer.AUDITLOG<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            .warn(RpcServer.AUTH_FAILED_FOR + clientIP + ":" + saslServer.getAttemptingUser());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        throw e;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (replyToken != null) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          RpcServer.LOG.debug("Will send token of size " + replyToken.length<a name="line.400"></a>
-<span class="sourceLineNo">401</span>              + " from saslServer.");<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        doRawSaslReply(SaslStatus.SUCCESS, new BytesWritable(replyToken), null,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            null);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      if (saslServer.isComplete()) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        String qop = saslServer.getNegotiatedQop();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        useWrap = qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        ugi = getAuthorizedUgi(saslServer.getAuthorizationID());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          RpcServer.LOG.debug("SASL server context established. Authenticated client: " + ugi +<a name="line.411"></a>
-<span class="sourceLineNo">412</span>              ". Negotiated QoP is " + qop);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        this.rpcServer.metrics.authenticationSuccess();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        saslContextEstablished = true;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
-<span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private void processUnwrappedData(byte[] inBuf) throws IOException, InterruptedException {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    ReadableByteChannel ch = Channels.newChannel(new ByteArrayInputStream(inBuf));<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    // Read all RPCs contained in the inBuf, even partial ones<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    while (true) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      int count;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      if (unwrappedDataLengthBuffer.remaining() &gt; 0) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        count = this.rpcServer.channelRead(ch, unwrappedDataLengthBuffer);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (count &lt;= 0 || unwrappedDataLengthBuffer.remaining() &gt; 0)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          return;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>      if (unwrappedData == null) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        unwrappedDataLengthBuffer.flip();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        int unwrappedDataLength = unwrappedDataLengthBuffer.getInt();<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>        if (unwrappedDataLength == RpcClient.PING_CALL_ID) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          if (RpcServer.LOG.isDebugEnabled())<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            RpcServer.LOG.debug("Received ping message");<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          unwrappedDataLengthBuffer.clear();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          continue; // ping message<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        unwrappedData = ByteBuffer.allocate(unwrappedDataLength);<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>      count = this.rpcServer.channelRead(ch, unwrappedData);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (count &lt;= 0 || unwrappedData.remaining() &gt; 0)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>      if (unwrappedData.remaining() == 0) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        unwrappedDataLengthBuffer.clear();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        unwrappedData.flip();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        processOneRpc(new SingleByteBuff(unwrappedData));<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        unwrappedData = null;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void processOneRpc(ByteBuff buf) throws IOException,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (connectionHeaderRead) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      processRequest(buf);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    } else {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      processConnectionHeader(buf);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.connectionHeaderRead = true;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      if (!authorizeConnection()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        // Throw FatalConnectionException wrapping ACE so client does right thing and closes<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        // down the connection instead of trying to read non-existent retun.<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        throw new AccessDeniedException("Connection from " + this + " for service " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          connectionHeader.getServiceName() + " is unauthorized for user: " + ugi);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      this.user = this.rpcServer.userProvider.create(this.ugi);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private boolean authorizeConnection() throws IOException {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    try {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // If auth method is DIGEST, the token was obtained by the<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      // real user for the effective user, therefore not required to<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      // authorize real user. doAs is allowed only for simple or kerberos<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      // authentication<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      if (ugi != null &amp;&amp; ugi.getRealUser() != null<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          &amp;&amp; (authMethod != AuthMethod.DIGEST)) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        ProxyUsers.authorize(ugi, this.getHostAddress(), this.rpcServer.conf);<a name="line.483"></a>
+<span class="sourceLineNo">345</span>      RpcServer.LOG.trace("Read input token of size={} for processing by saslServer.unwrap()",<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        saslToken.limit());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      if (!useWrap) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        processOneRpc(saslToken);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      } else {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        byte[] b = saslToken.hasArray() ? saslToken.array() : saslToken.toBytes();<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        byte [] plaintextData;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (useCryptoAesWrap) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          // unwrap with CryptoAES<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          plaintextData = cryptoAES.unwrap(b, 0, b.length);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          plaintextData = saslServer.unwrap(b, 0, b.length);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        processUnwrappedData(plaintextData);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } else {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      byte[] replyToken;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      try {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        if (saslServer == null) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          saslServer =<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              new HBaseSaslRpcServer(authMethod, rpcServer.saslProps, rpcServer.secretManager);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          RpcServer.LOG.debug("Created SASL server with mechanism={}",<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              authMethod.getMechanismName());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        RpcServer.LOG.debug("Read input token of size={} for processing by saslServer." +<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            "evaluateResponse()", saslToken.limit());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        replyToken = saslServer.evaluateResponse(saslToken.hasArray()?<a name="line.371"></a>
+<span class="sourceLineNo">372</span>            saslToken.array() : saslToken.toBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } catch (IOException e) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        IOException sendToClient = e;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        Throwable cause = e;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        while (cause != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          if (cause instanceof InvalidToken) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>            sendToClient = (InvalidToken) cause;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>            break;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          cause = cause.getCause();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        doRawSaslReply(SaslStatus.ERROR, null, sendToClient.getClass().getName(),<a name="line.383"></a>
+<span class="sourceLineNo">384</span>          sendToClient.getLocalizedMessage());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        this.rpcServer.metrics.authenticationFailure();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        String clientIP = this.toString();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        // attempting user could be null<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        RpcServer.AUDITLOG<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .warn(RpcServer.AUTH_FAILED_FOR + clientIP + ":" + saslServer.getAttemptingUser());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        throw e;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (replyToken != null) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          RpcServer.LOG.debug("Will send token of size " + replyToken.length<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              + " from saslServer.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        doRawSaslReply(SaslStatus.SUCCESS, new BytesWritable(replyToken), null,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            null);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      if (saslServer.isComplete()) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        String qop = saslServer.getNegotiatedQop();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        useWrap = qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        ugi = getAuthorizedUgi(saslServer.getAuthorizationID());<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          RpcServer.LOG.debug("SASL server context established. Authenticated client: " + ugi +<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              ". Negotiated QoP is " + qop);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        this.rpcServer.metrics.authenticationSuccess();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        saslContextEstablished = true;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private void processUnwrappedData(byte[] inBuf) throws IOException, InterruptedException {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    ReadableByteChannel ch = Channels.newChannel(new ByteArrayInputStream(inBuf));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // Read all RPCs contained in the inBuf, even partial ones<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    while (true) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      int count;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      if (unwrappedDataLengthBuffer.remaining() &gt; 0) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        count = this.rpcServer.channelRead(ch, unwrappedDataLengthBuffer);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        if (count &lt;= 0 || unwrappedDataLengthBuffer.remaining() &gt; 0)<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          return;<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>      if (unwrappedData == null) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        unwrappedDataLengthBuffer.flip();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        int unwrappedDataLength = unwrappedDataLengthBuffer.getInt();<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>        if (unwrappedDataLength == RpcClient.PING_CALL_ID) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          if (RpcServer.LOG.isDebugEnabled())<a name="line.431"></a>
+<span class="sourceLineNo">432</span>            RpcServer.LOG.debug("Received ping message");<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          unwrappedDataLengthBuffer.clear();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          continue; // ping message<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        unwrappedData = ByteBuffer.allocate(unwrappedDataLength);<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>      count = this.rpcServer.channelRead(ch, unwrappedData);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      if (count &lt;= 0 || unwrappedData.remaining() &gt; 0)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        return;<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>      if (unwrappedData.remaining() == 0) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        unwrappedDataLengthBuffer.clear();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        unwrappedData.flip();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        processOneRpc(new SingleByteBuff(unwrappedData));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        unwrappedData = null;<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>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  public void processOneRpc(ByteBuff buf) throws IOException,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      InterruptedException {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    if (connectionHeaderRead) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      processRequest(buf);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    } else {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      processConnectionHeader(buf);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      this.connectionHeaderRead = true;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (!authorizeConnection()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        // Throw FatalConnectionException wrapping ACE so client does right thing and closes<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        // down the connection instead of trying to read non-existent retun.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        throw new AccessDeniedException("Connection from " + this + " for service " +<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          connectionHeader.getServiceName() + " is unauthorized for user: " + ugi);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      this.user = this.rpcServer.userProvider.create(this.ugi);<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><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  private boolean authorizeConnection() throws IOException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    try {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      // If auth method is DIGEST, the token was obtained by the<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      // real user for the effective user, therefore not required to<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      // authorize real user. doAs is allowed only for simple or kerberos<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      // authentication<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      if (ugi != null &amp;&amp; ugi.getRealUser() != null<a name="line.475"></a>
+<span class="sourceLineNo">476</span>          &amp;&amp; (authMethod != AuthMethod.DIGEST)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        ProxyUsers.authorize(ugi, this.getHostAddress(), this.rpcServer.conf);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      this.rpcServer.authorize(ugi, connectionHeader, getHostInetAddress());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      this.rpcServer.metrics.authorizationSuccess();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    } catch (AuthorizationException ae) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (RpcServer.LOG.isDebugEnabled()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        RpcServer.LOG.debug("Connection authorization failed: " + ae.getMessage(), ae);<a name="line.483"></a>
 <span class="sourceLineNo">484</span>      }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      this.rpcServer.authorize(ugi, connectionHeader, getHostInetAddress());<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      this.rpcServer.metrics.authorizationSuccess();<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    } catch (AuthorizationException ae) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      if (RpcServer.LOG.isDebugEnabled()) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        RpcServer.LOG.debug("Connection authorization failed: " + ae.getMessage(), ae);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this.rpcServer.metrics.authorizationFailure();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      doRespond(getErrorResponse(ae.getMessage(), new AccessDeniedException(ae)));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return false;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return true;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  // Reads the connection header following version<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void processConnectionHeader(ByteBuff buf) throws IOException {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    if (buf.hasArray()) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      this.connectionHeader = ConnectionHeader.parseFrom(buf.array());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      CodedInputStream cis = UnsafeByteOperations<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      cis.enableAliasing(true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      this.connectionHeader = ConnectionHeader.parseFrom(cis);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    String serviceName = connectionHeader.getServiceName();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    if (serviceName == null) throw new EmptyServiceNameException();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    this.service = RpcServer.getService(this.rpcServer.services, serviceName);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    if (this.service == null) throw new UnknownServiceException(serviceName);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    setupCellBlockCodecs(this.connectionHeader);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    RPCProtos.ConnectionHeaderResponse.Builder chrBuilder =<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        RPCProtos.ConnectionHeaderResponse.newBuilder();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    setupCryptoCipher(this.connectionHeader, chrBuilder);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    responseConnectionHeader(chrBuilder);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    UserGroupInformation protocolUser = createUser(connectionHeader);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (!useSasl) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      ugi = protocolUser;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      if (ugi != null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        ugi.setAuthenticationMethod(AuthMethod.SIMPLE.authenticationMethod);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      // audit logging for SASL authenticated users happens in saslReadAndProcess()<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      if (authenticatedWithFallback) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        RpcServer.LOG.warn("Allowed fallback to SIMPLE auth for " + ugi<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            + " connecting from " + getHostAddress());<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      }<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    } else {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      // user is authenticated<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      ugi.setAuthenticationMethod(authMethod.authenticationMethod);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      //Now we check if this is a proxy user case. If the protocol user is<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      //different from the 'user', it is a proxy user scenario. However,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      //this is not allowed if user authenticated with DIGEST.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if ((protocolUser != null)<a name="line.535"></a>
-<span class="sourceLineNo">536</span>          &amp;&amp; (!protocolUser.getUserName().equals(ugi.getUserName()))) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        if (authMethod == AuthMethod.DIGEST) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          // Not allowed to doAs if token authentication is used<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          throw new AccessDeniedException("Authenticated user (" + ugi<a name="line.539"></a>
-<span class="sourceLineNo">540</span>              + ") doesn't match what the client claims to be ("<a name="line.540"></a>
-<span class="sourceLineNo">541</span>              + protocolUser + ")");<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        } else {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>          // Effective user can be different from authenticated user<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          // for simple auth or kerberos auth<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          // The user is the real user. Now we create a proxy user<a name="line.545"></a>
-<span class="sourceLineNo">546</span>          UserGroupInformation realUser = ugi;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>          ugi = UserGroupInformation.createProxyUser(protocolUser<a name="line.547"></a>
-<span class="sourceLineNo">548</span>              .getUserName(), realUser);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>          // Now the user is a proxy user, set Authentication method Proxy.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          ugi.setAuthenticationMethod(AuthenticationMethod.PROXY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>        }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (connectionHeader.hasVersionInfo()) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // see if this connection will support RetryImmediatelyException<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      retryImmediatelySupported = VersionInfoUtil.hasMinimumVersion(getVersionInfo(), 1, 2);<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>      RpcServer.AUDITLOG.info("Connection from " + this.hostAddress + " port: " + this.remotePort<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          + " with version info: "<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          + TextFormat.shortDebugString(connectionHeader.getVersionInfo()));<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      RpcServer.AUDITLOG.info("Connection from " + this.hostAddress + " port: " + this.remotePort<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          + " with unknown version info");<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>  /**<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * Send the response for connection header<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  private void responseConnectionHeader(RPCProtos.ConnectionHeaderResponse.Builder chrBuilder)<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      throws FatalConnectionException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    // Response the connection header if Crypto AES is enabled<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (!chrBuilder.hasCryptoCipherMeta()) return;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      byte[] connectionHeaderResBytes = chrBuilder.build().toByteArray();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // encrypt the Crypto AES cipher meta data with sasl server, and send to client<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      byte[] unwrapped = new byte[connectionHeaderResBytes.length + 4];<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      Bytes.putBytes(unwrapped, 0, Bytes.toBytes(connectionHeaderResBytes.length), 0, 4);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Bytes.putBytes(unwrapped, 4, connectionHeaderResBytes, 0, connectionHeaderResBytes.length);<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      byte[] wrapped = saslServer.wrap(unwrapped, 0, unwrapped.length);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      BufferChain bc;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      try (ByteBufferOutputStream response = new ByteBufferOutputStream(wrapped.length + 4);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          DataOutputStream out = new DataOutputStream(response)) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        out.writeInt(wrapped.length);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        out.write(wrapped);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        bc = new BufferChain(response.getByteBuffer());<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      doRespond(() -&gt; bc);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    } catch (IOException ex) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      throw new UnsupportedCryptoException(ex.getMessage(), ex);<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><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  protected abstract void doRespond(RpcResponse resp) throws IOException;<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>   * @param buf<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   *          Has the request header and the request param and optionally<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   *          encoded data buffer all in this one array.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * @throws IOException<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * @throws InterruptedException<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  protected void processRequest(ByteBuff buf) throws IOException,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      InterruptedException {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    long totalRequestSize = buf.limit();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    int offset = 0;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    // Here we read in the header. We avoid having pb<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    // do its default 4k allocation for CodedInputStream. We force it to use<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    // backing array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    CodedInputStream cis;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (buf.hasArray()) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      cis = UnsafeByteOperations.unsafeWrap(buf.array(), 0, buf.limit()).newCodedInput();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    } else {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      cis = UnsafeByteOperations<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    cis.enableAliasing(true);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    int headerSize = cis.readRawVarint32();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    offset = cis.getTotalBytesRead();<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    Message.Builder builder = RequestHeader.newBuilder();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    ProtobufUtil.mergeFrom(builder, cis, headerSize);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    RequestHeader header = (RequestHeader) builder.build();<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    offset += headerSize;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    int id = header.getCallId();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    if (RpcServer.LOG.isTraceEnabled()) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      RpcServer.LOG.trace("RequestHeader " + TextFormat.shortDebugString(header)<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          + " totalRequestSize: " + totalRequestSize + " bytes");<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    // Enforcing the call queue size, this triggers a retry in the client<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    // This is a bit late to be doing this check - we have already read in the<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    // total request.<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    if ((totalRequestSize +<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        this.rpcServer.callQueueSizeInBytes.sum()) &gt; this.rpcServer.maxQueueSizeInBytes) {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      final ServerCall&lt;?&gt; callTooBig = createCall(id, this.service, null, null, null, null,<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      callTooBig.setResponse(null, null,  RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        ", is hbase.ipc.server.max.callqueue.size too small?");<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      callTooBig.sendResponseIfReady();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      return;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    MethodDescriptor md = null;<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    Message param = null;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    CellScanner cellScanner = null;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    try {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      if (header.hasRequestParam() &amp;&amp; header.getRequestParam()) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        md = this.service.getDescriptorForType().findMethodByName(<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            header.getMethodName());<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        if (md == null)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          throw new UnsupportedOperationException(header.getMethodName());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        builder = this.service.getRequestPrototype(md).newBuilderForType();<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        cis.resetSizeCounter();<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        int paramSize = cis.readRawVarint32();<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        offset += cis.getTotalBytesRead();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        if (builder != null) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>          ProtobufUtil.mergeFrom(builder, cis, paramSize);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          param = builder.build();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        }<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        offset += paramSize;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        // currently header must have request param, so we directly throw<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        // exception here<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        String msg = "Invalid request header: "<a name="line.664"></a>
-<span class="sourceLineNo">665</span>            + TextFormat.shortDebugString(header)<a name="line.665"></a>
-<span class="sourceLineNo">666</span>            + ", should have param set in it";<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        RpcServer.LOG.warn(msg);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        throw new DoNotRetryIOException(msg);<a name="line.668"></a>
+<span class="sourceLineNo">485</span>      this.rpcServer.metrics.authorizationFailure();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      doRespond(getErrorResponse(ae.getMessage(), new AccessDeniedException(ae)));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      return false;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return true;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span>  // Reads the connection header following version<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  private void processConnectionHeader(ByteBuff buf) throws IOException {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (buf.hasArray()) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.connectionHeader = ConnectionHeader.parseFrom(buf.array());<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    } else {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      CodedInputStream cis = UnsafeByteOperations.unsafeWrap(<a name="line.497"></a>
+<span class="sourceLineNo">498</span>          new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      cis.enableAliasing(true);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      this.connectionHeader = ConnectionHeader.parseFrom(cis);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    String serviceName = connectionHeader.getServiceName();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    if (serviceName == null) throw new EmptyServiceNameException();<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this.service = RpcServer.getService(this.rpcServer.services, serviceName);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (this.service == null) throw new UnknownServiceException(serviceName);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    setupCellBlockCodecs(this.connectionHeader);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    RPCProtos.ConnectionHeaderResponse.Builder chrBuilder =<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        RPCProtos.ConnectionHeaderResponse.newBuilder();<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    setupCryptoCipher(this.connectionHeader, chrBuilder);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    responseConnectionHeader(chrBuilder);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    UserGroupInformation protocolUser = createUser(connectionHeader);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!useSasl) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      ugi = protocolUser;<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      if (ugi != null) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        ugi.setAuthenticationMethod(AuthMethod.SIMPLE.authenticationMethod);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      }<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      // audit logging for SASL authenticated users happens in saslReadAndProcess()<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      if (authenticatedWithFallback) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        RpcServer.LOG.warn("Allowed fallback to SIMPLE auth for {} connecting from {}",<a name="line.519"></a>
+<span class="sourceLineNo">520</span>            ugi, getHostAddress());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      }<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    } else {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      // user is authenticated<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      ugi.setAuthenticationMethod(authMethod.authenticationMethod);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      //Now we check if this is a proxy user case. If the protocol user is<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      //different from the 'user', it is a proxy user scenario. However,<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      //this is not allowed if user authenticated with DIGEST.<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      if ((protocolUser != null)<a name="line.528"></a>
+<span class="sourceLineNo">529</span>          &amp;&amp; (!protocolUser.getUserName().equals(ugi.getUserName()))) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        if (authMethod == AuthMethod.DIGEST) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          // Not allowed to doAs if token authentication is used<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          throw new AccessDeniedException("Authenticated user (" + ugi<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              + ") doesn't match what the client claims to be ("<a name="line.533"></a>
+<span class="sourceLineNo">534</span>              + protocolUser + ")");<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        } else {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>          // Effective user can be different from authenticated user<a name="line.536"></a>
+<span class="sourceLineNo">537</span>          // for simple auth or kerberos auth<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          // The user is the real user. Now we create a proxy user<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          UserGroupInformation realUser = ugi;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          ugi = UserGroupInformation.createProxyUser(protocolUser<a name="line.540"></a>
+<span class="sourceLineNo">541</span>              .getUserName(), realUser);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          // Now the user is a proxy user, set Authentication method Proxy.<a name="line.542"></a>
+<span class="sourceLineNo">543</span>          ugi.setAuthenticationMethod(AuthenticationMethod.PROXY);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        }<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      }<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    }<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    String version;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    if (this.connectionHeader.hasVersionInfo()) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      // see if this connection will support RetryImmediatelyException<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.retryImmediatelySupported =<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          VersionInfoUtil.hasMinimumVersion(getVersionInfo(), 1, 2);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      version = this.connectionHeader.getVersionInfo().getVersion();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    } else {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      version = "UNKNOWN";<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    RpcServer.AUDITLOG.info("Connection from {}:{}, version={}, sasl={}, ugi={}, service={}",<a name="line.556"></a>
+<span class="sourceLineNo">557</span>        this.hostAddress, this.remotePort, version, this.useSasl, this.ugi, serviceName);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * Send the response for connection header<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
+<span class="sourceLineNo">563</span>  private void responseConnectionHeader(RPCProtos.ConnectionHeaderResponse.Builder chrBuilder)<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      throws FatalConnectionException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    // Response the connection header if Crypto AES is enabled<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (!chrBuilder.hasCryptoCipherMeta()) return;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      byte[] connectionHeaderResBytes = chrBuilder.build().toByteArray();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      // encrypt the Crypto AES cipher meta data with sasl server, and send to client<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      byte[] unwrapped = new byte[connectionHeaderResBytes.length + 4];<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      Bytes.putBytes(unwrapped, 0, Bytes.toBytes(connectionHeaderResBytes.length), 0, 4);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      Bytes.putBytes(unwrapped, 4, connectionHeaderResBytes, 0, connectionHeaderResBytes.length);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      byte[] wrapped = saslServer.wrap(unwrapped, 0, unwrapped.length);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      BufferChain bc;<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      try (ByteBufferOutputStream response = new ByteBufferOutputStream(wrapped.length + 4);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>          DataOutputStream out = new DataOutputStream(response)) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        out.writeInt(wrapped.length);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        out.write(wrapped);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>        bc = new BufferChain(response.getByteBuffer());<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      doRespond(() -&gt; bc);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    } catch (IOException ex) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      throw new UnsupportedCryptoException(ex.getMessage(), ex);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  protected abstract void doRespond(RpcResponse resp) throws IOException;<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>   * @param buf<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *          Has the request header and the request param and optionally<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   *          encoded data buffer all in this one array.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @throws IOException<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @throws InterruptedException<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  protected void processRequest(ByteBuff buf) throws IOException,<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      InterruptedException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    long totalRequestSize = buf.limit();<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    int offset = 0;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // Here we read in the header. We avoid having pb<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    // do its default 4k allocation for CodedInputStream. We force it to use<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    // backing array.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    CodedInputStream cis;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    if (buf.hasArray()) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      cis = UnsafeByteOperations.unsafeWrap(buf.array(), 0, buf.limit()).newCodedInput();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    } else {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      cis = UnsafeByteOperations<a name="line.607"></a>
+<span class="sourceLineNo">608</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    cis.enableAliasing(true);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    int headerSize = cis.readRawVarint32();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    offset = cis.getTotalBytesRead();<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    Message.Builder builder = RequestHeader.newBuilder();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    ProtobufUtil.mergeFrom(builder, cis, headerSize);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    RequestHeader header = (RequestHeader) builder.build();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    offset += headerSize;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    int id = header.getCallId();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    if (RpcServer.LOG.isTraceEnabled()) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      RpcServer.LOG.trace("RequestHeader " + TextFormat.shortDebugString(header)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>          + " totalRequestSize: " + totalRequestSize + " bytes");<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    }<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // Enforcing the call queue size, this triggers a retry in the client<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    // This is a bit late to be doing this check - we have already read in the<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    // total request.<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    if ((totalRequestSize +<a name="line.625"></a>
+<span class="sourceLineNo">626</span>        this.rpcServer.callQueueSizeInBytes.sum()) &gt; this.rpcServer.maxQueueSizeInBytes) {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>      final ServerCall&lt;?&gt; callTooBig = createCall(id, this.service, null, null, null, null,<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>      callTooBig.setResponse(null, null,  RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.631"></a>
+<span class="sourceLineNo">632</span>        ", is hbase.ipc.server.max.callqueue.size too small?");<a name="line.632"></a>
+<span class="sourceLineNo">633</span>      callTooBig.sendResponseIfReady();<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    MethodDescriptor md = null;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    Message param = null;<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    CellScanner cellScanner = null;<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      if (header.hasRequestParam() &amp;&amp; header.getRequestParam()) {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        md = this.service.getDescriptorForType().findMethodByName(<a name="line.641"></a>
+<span class="sourceLineNo">642</span>            header.getMethodName());<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        if (md == null)<a name="line.643"></a>
+<span class="sourceLineNo">644</span>          throw new UnsupportedOperationException(header.getMethodName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>        builder = this.service.getRequestPrototype(md).newBuilderForType();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        cis.resetSizeCounter();<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        int paramSize = cis.readRawVarint32();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        offset += cis.getTotalBytesRead();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (builder != null) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          ProtobufUtil.mergeFrom(builder, cis, paramSize);<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          param = builder.build();<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>        offset += paramSize;<a name="line.653"></a>
+<span class="sourceLineNo">654</span>      } else {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        // currently header must have request param, so we directly throw<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        // exception here<a name="line.656"></a>
+<span class="sourceLineNo">657</span>        String msg = "Invalid request header: "<a name="line.657"></a>
+<span class="sourceLineNo">658</span>            + TextFormat.shortDebugString(header)<a name="line.658"></a>
+<span class="sourceLineNo">659</span>            + ", should have param set in it";<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        RpcServer.LOG.warn(msg);<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        throw new DoNotRetryIOException(msg);<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      if (header.hasCellBlockMeta()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        buf.position(offset);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        ByteBuff dup = buf.duplicate();<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        dup.limit(offset + header.getCellBlockMeta().getLength());<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        cellScanner = this.rpcServer.cellBlockBuilder.createCellScannerReusingBuffers(<a name="line.667"></a>
+<span class="sourceLineNo">668</span>            this.codec, this.compressionCodec, dup);<a name="line.668"></a>
 <span class="sourceLineNo">669</span>      }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      if (header.hasCellBlockMeta()) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        buf.position(offset);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        ByteBuff dup = buf.duplicate();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        dup.limit(offset + header.getCellBlockMeta().getLength());<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        cellScanner = this.rpcServer.cellBlockBuilder.createCellScannerReusingBuffers(<a name="line.674"></a>
-<span class="sourceLineNo">675</span>            this.codec, this.compressionCodec, dup);<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    } catch (Throwable t) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      InetSocketAddress address = this.rpcServer.getListenerAddress();<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      String msg = (address != null ? address : "(channel closed)")<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          + " is unable to read call parameter from client "<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          + getHostAddress();<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      RpcServer.LOG.warn(msg, t);<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>      this.rpcServer.metrics.exception(t);<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>      // probably the hbase hadoop version does not match the running hadoop<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      // version<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      if (t instanceof LinkageError) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        t = new DoNotRetryIOException(t);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      // If the method is not present on the server, do not retry.<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      if (t instanceof UnsupportedOperationException) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>        t = new DoNotRetryIOException(t);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      }<a name="line.694"></a>
+<span class="sourceLineNo">670</span>    } catch (Throwable t) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      InetSocketAddress address = this.rpcServer.getListenerAddress();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      String msg = (address != null ? address : "(channel closed)")<a name="line.672"></a>
+<span class="sourceLineNo">673</span>          + " is unable to read call parameter from client "<a name="line.673"></a>
+<span class="sourceLineNo">674</span>          + getHostAddress();<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      RpcServer.LOG.warn(msg, t);<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>      this.rpcServer.metrics.exception(t);<a name="line.677"></a>
+<span class="sourceLineNo">678</span><a name="line.678"></a>
+<span class="sourceLineNo">679</span>      // probably the hbase hadoop version does not match the running hadoop<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      // version<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      if (t instanceof LinkageError) {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>        t = new DoNotRetryIOException(t);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      // If the method is not present on the server, do not retry.<a name="line.684"></a>
+<span class="sourceLineNo">685</span>      if (t instanceof UnsupportedOperationException) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        t = new DoNotRetryIOException(t);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      }<a name="line.687"></a>
+<span class="sourceLineNo">688</span><a name="line.688"></a>
+<span class="sourceLineNo">689</span>      ServerCall&lt;?&gt; readParamsFailedCall = createCall(id, this.service, null, null, null, null,<a name="line.689"></a>
+<span class="sourceLineNo">690</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      readParamsFailedCall.setResponse(null, null, t, msg + "; " + t.getMessage());<a name="line.691"></a>
+<span class="sourceLineNo">692</span>      readParamsFailedCall.sendResponseIfReady();<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      return;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
 <span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>      ServerCall&lt;?&gt; readParamsFailedCall = createCall(id, this.service, null, null, null, null,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      readParamsFailedCall.setResponse(null, null, t, msg + "; " + t.getMessage());<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      readParamsFailedCall.sendResponseIfReady();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      return;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
+<span class="sourceLineNo">696</span>    int timeout = 0;<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    if (header.hasTimeout() &amp;&amp; header.getTimeout() &gt; 0) {<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      timeout = Math.max(this.rpcServer.minClientRequestTimeout, header.getTimeout());<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    }<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ServerCall&lt;?&gt; call = createCall(id, this.service, md, header, param, cellScanner, totalRequestSize,<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      this.addr, timeout, this.callCleanup);<a name="line.701"></a>
 <span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    int timeout = 0;<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    if (header.hasTimeout() &amp;&amp; header.getTimeout() &gt; 0) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>      timeout = Math.max(this.rpcServer.minClientRequestTimeout, header.getTimeout());<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    ServerCall&lt;?&gt; call = createCall(id, this.service, md, header, param, cellScanner, totalRequestSize,<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      this.addr, timeout, this.callCleanup);<a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (!this.rpcServer.scheduler.dispatch(new CallRunner(this.rpcServer, call))) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.rpcServer.callQueueSizeInBytes.add(-1 * call.getSize());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      call.setResponse(null, null, RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.714"></a>
-<span class="sourceLineNo">715</span>            ", too many items queued ?");<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      call.sendResponseIfReady();<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected final RpcResponse getErrorResponse(String msg, Exception e) throws IOException {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ResponseHeader.Builder headerBuilder = ResponseHeader.newBuilder().setCallId(-1);<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    ServerCall.setExceptionResponse(e, msg, headerBuilder);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    ByteBuffer headerBuf =<a name="line.723"></a>
-<span class="sourceLineNo">724</span>        ServerCall.createHeaderAndMessageBytes(null, headerBuilder.build(), 0, null);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    BufferChain buf = new BufferChain(headerBuf);<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    return () -&gt; buf;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
-<span class="sourceLineNo">728</span><a name="line.728"></a>
-<span class="sourceLineNo">729</span>  private void doBadPreambleHandling(String msg) throws IOException {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    doBadPreambleHandling(msg, new FatalConnectionException(msg));<a name="line.730"></a>
-<span class="sourceLineNo">731</span>  }<a name="line.731"></a>
-<span class="sourceLineNo">732</span><a name="line.732"></a>
-<span class="sourceLineNo">733</span>  private void doBadPreambleHandling(String msg, Exception e) throws IOException {<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    SimpleRpcServer.LOG.warn(msg);<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    doRespond(getErrorResponse(msg, e));<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 final boolean processPreamble(ByteBuffer preambleBuffer) throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    assert preambleBuffer.remaining() == 6;<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    for (int i = 0; i &lt; RPC_HEADER.length; i++) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      if (RPC_HEADER[i] != preambleBuffer.get()) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>        doBadPreambleHandling(<a name="line.742"></a>
-<span class="sourceLineNo">743</span>          "Expected HEADER=" + Bytes.toStringBinary(RPC_HEADER) + " but received HEADER=" +<a name="line.743"></a>
-<span class="sourceLineNo">744</span>              Bytes.toStringBinary(preambleBuffer.array(), 0, RPC_HEADER.length) + " from " +<a name="line.744"></a>
-<span class="sourceLineNo">745</span>              toString());<a name="line.745"></a>
-<span class="sourceLineNo">746</span>        return false;<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    int version = preambleBuffer.get() &amp; 0xFF;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    byte authbyte = preambleBuffer.get();<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    this.authMethod = AuthMethod.valueOf(authbyte);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    if (version != SimpleRpcServer.CURRENT_VERSION) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>      String msg = getFatalConnectionString(version, authbyte);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      doBadPreambleHandling(msg, new WrongVersionException(msg));<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      return false;<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    if (authMethod == null) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      String msg = getFatalConnectionString(version, authbyte);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      doBadPreambleHandling(msg, new BadAuthException(msg));<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    if (this.rpcServer.isSecurityEnabled &amp;&amp; authMethod == AuthMethod.SIMPLE) {<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      if (this.rpcServer.allowFallbackToSimpleAuth) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>        this.rpcServer.metrics.authenticationFallback();<a name="line.764"></a>
-<span class="sourceLineNo">765</span>        authenticatedWithFallback = true;<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      } else {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>        AccessDeniedException ae = new AccessDeniedException("Authentication is required");<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        doRespond(getErrorResponse(ae.getMessage(), ae));<a name="line.768"></a>
-<span class="sourceLineNo">769</span>        return false;<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>    if (!this.rpcServer.isSecurityEnabled &amp;&amp; authMethod != AuthMethod.SIMPLE) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      doRawSaslReply(SaslStatus.SUCCESS, new IntWritable(SaslUtil.SWITCH_TO_SIMPLE_AUTH), null,<a name="line.773"></a>
-<span class="sourceLineNo">774</span>        null);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      authMethod = AuthMethod.SIMPLE;<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // client has already sent the initial Sasl message and we<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // should ignore it. Both client and server should fall back<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      // to simple auth from now on.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      skipInitialSaslHandshake = true;<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    if (authMethod != AuthMethod.SIMPLE) {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      useSasl = true;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return true;<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>  public abstract boolean isConnectionOpen();<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  public abstract ServerCall&lt;?&gt; createCall(int id, BlockingService service, MethodDescriptor md,<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      RequestHeader header, Message param, CellScanner cellScanner, long size,<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      InetAddress remoteAddress, int timeout, CallCleanup reqCleanup);<a name="line.791"></a>
-<span class="sourceLineNo">792</span><a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static class ByteBuffByteInput extends ByteInput {<a name="line.793"></a>
-<span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    private ByteBuff buf;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    private int offset;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    private int length;<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    ByteBuffByteInput(ByteBuff buf, int offset, int length) {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      this.buf = buf;<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      this.offset = offset;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      this.length = length;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    @Override<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    public byte read(int offset) {<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      return this.buf.get(getAbsoluteOffset(offset));<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span><a name="line.809"></a>
-<span class="sourceLineNo">810</span>    private int getAbsoluteOffset(int offset) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      return this.offset + offset;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>    @Override<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    public int read(int offset, byte[] out, int outOffset, int len) {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      this.buf.get(getAbsoluteOffset(offset), out, outOffset, len);<a name="line.816"></a>
+<span class="sourceLineNo">703</span>    if (!this.rpcServer.scheduler.dispatch(new CallRunner(this.rpcServer, call))) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      this.rpcServer.callQueueSizeInBytes.add(-1 * call.getSize());<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      call.setResponse(null, null, RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.707"></a>
+<span class="sourceLineNo">708</span>            ", too many items queued ?");<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      call.sendResponseIfReady();<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  protected final RpcResponse getErrorResponse(String msg, Exception e) throws IOException {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    ResponseHeader.Builder headerBuilder = ResponseHeader.newBuilder().setCallId(-1);<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    ServerCall.setExceptionResponse(e, msg, headerBuilder);<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    ByteBuffer headerBuf =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        ServerCall.createHeaderAndMessageBytes(null, headerBuilder.build(), 0, null);<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    BufferChain buf = new BufferChain(headerBuf);<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    return () -&gt; buf;<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  private void doBadPreambleHandling(String msg) throws IOException {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    doBadPreambleHandling(msg, new FatalConnectionException(msg));<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>  private void doBadPreambleHandling(String msg, Exception e) throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    SimpleRpcServer.LOG.warn(msg);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    doRespond(getErrorResponse(msg, e));<a name="line.728"></a>
+<span class="sourceLineNo">729</span>  }<a name="line.729"></a>
+<span class="sourceL

<TRUNCATED>

[18/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
index f5ac8fc..9931529 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
@@ -280,309 +280,303 @@
 <span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        POOL.latchCountUp();<a name="line.273"></a>
 <span class="sourceLineNo">274</span>        if (runCleaner()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          if (LOG.isTraceEnabled()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        } else {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          if (LOG.isTraceEnabled()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.trace("WALs outstanding under {}", oldFileDir);<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>      } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        POOL.latchCountDown();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (LOG.isTraceEnabled()) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private void preRunCleaner() {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<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>  public Boolean runCleaner() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    preRunCleaner();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    POOL.submit(task);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    return task.join();<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>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Sort the given list in (descending) order of the space each element takes<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // no need to sort for empty or single directory<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      return;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      @Override<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<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>      private long getSpace(FileStatus f) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        Long cached = directorySpaces.get(f);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (cached != null) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          return cached;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        try {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          long space =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          directorySpaces.put(f, space);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          return space;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } catch (IOException e) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          return -1;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    });<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * necessary.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @return true iff successfully deleted all files<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (files == null) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return true;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // first check to see if the path is valid<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    for (FileStatus file : files) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (validate(file.getPath())) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        validFiles.add(file);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // check each of the cleaners for the valid files<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (T cleaner : cleanersChain) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.375"></a>
-<span class="sourceLineNo">376</span>            + this.oldFileDir);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return false;<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>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>      // trace which cleaner is holding on to each file<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (LOG.isTraceEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        for (FileStatus file : deletableValidFiles) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          if (!filteredFileSet.contains(file)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return deleteFiles(filesToDelete) == files.size();<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>   * Delete the given files<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param filesToDelete files to delete<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @return number of deleted files<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int deletedFileCount = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    for (FileStatus file : filesToDelete) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Path filePath = file.getPath();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      try {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        boolean success = this.fs.delete(filePath, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        if (success) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          deletedFileCount++;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      } catch (IOException e) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        e = e instanceof RemoteException ?<a name="line.418"></a>
-<span class="sourceLineNo">419</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        LOG.warn("Error while deleting: " + filePath, e);<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>    return deletedFileCount;<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>  @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public synchronized void cleanup() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (T lc : this.cleanersChain) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      try {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        lc.stop("Exiting");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      } catch (Throwable t) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        LOG.warn("Stopping", t);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @VisibleForTesting<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  int getChorePoolSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return POOL.size;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * @param enabled<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public boolean setEnabled(final boolean enabled) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return this.enabled.getAndSet(enabled);<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 boolean getEnabled() { return this.enabled.get();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private interface Action&lt;T&gt; {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    T act() throws IOException;<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>  /**<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    private final Path dir;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    private final boolean root;<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      this.dir = dir;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      this.root = root;<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>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    protected Boolean compute() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      LOG.debug("Cleaning under {}", dir);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      List&lt;FileStatus&gt; subDirs;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      List&lt;FileStatus&gt; files;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      try {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        // which will fall through to succeeding.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      } catch (IOException ioe) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        return false;<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>      boolean nullSubDirs = subDirs == null;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (nullSubDirs) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (files == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        LOG.trace("There is no file under {}", dir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (!nullSubDirs) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        sortByConsumedSpace(subDirs);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        for (FileStatus subdir : subDirs) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          tasks.add(task);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          task.fork();<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      boolean result = true;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // it is not the root dir, then task will try to delete it.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (result &amp;&amp; !root) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return result;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>     * Get FileStatus with filter.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>     * even though status is empty but not null.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     * @param function a filter function<a name="line.522"></a>
-<span class="sourceLineNo">523</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.523"></a>
-<span class="sourceLineNo">524</span>     * @throws IOException if there's an error other than dir not existing<a name="line.524"></a>
-<span class="sourceLineNo">525</span>     */<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * Perform a delete on a specified type.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * @param deletion a delete<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * @return true if it deleted successfully, false otherwise<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      boolean deleted;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      try {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        deleted = deletion.act();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        // message below.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            "exception details at TRACE.", dir);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        deleted = false;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      } catch (IOException ioe) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.550"></a>
-<span class="sourceLineNo">551</span>                  "happening, use following exception when asking on mailing list.",<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  type, dir, ioe);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        deleted = false;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      return deleted;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    /**<a name="line.559"></a>
-<span class="sourceLineNo">560</span>     * Get cleaner results of subdirs.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>     * @param tasks subdirs cleaner tasks<a name="line.561"></a>
-<span class="sourceLineNo">562</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.562"></a>
-<span class="sourceLineNo">563</span>     * @throws IOException something happen during computation<a name="line.563"></a>
-<span class="sourceLineNo">564</span>     */<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      boolean cleaned = true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        for (CleanerTask task : tasks) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          cleaned &amp;= task.get();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        throw new IOException(e);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return cleaned;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>}<a name="line.577"></a>
+<span class="sourceLineNo">275</span>          LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } else {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.trace("WALs outstanding under {}", oldFileDir);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } finally {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        POOL.latchCountDown();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } else {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void preRunCleaner() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public Boolean runCleaner() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    preRunCleaner();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    POOL.submit(task);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return task.join();<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>   * Sort the given list in (descending) order of the space each element takes<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // no need to sort for empty or single directory<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      return;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      private long getSpace(FileStatus f) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        Long cached = directorySpaces.get(f);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (cached != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          return cached;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        try {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          long space =<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          directorySpaces.put(f, space);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          return space;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          return -1;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    });<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * necessary.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true iff successfully deleted all files<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (files == null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return true;<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>    // first check to see if the path is valid<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (FileStatus file : files) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (validate(file.getPath())) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        validFiles.add(file);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // check each of the cleaners for the valid files<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    for (T cleaner : cleanersChain) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            + this.oldFileDir);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        return false;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // trace which cleaner is holding on to each file<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (LOG.isTraceEnabled()) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        for (FileStatus file : deletableValidFiles) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          if (!filteredFileSet.contains(file)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return deleteFiles(filesToDelete) == files.size();<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>  /**<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * Delete the given files<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param filesToDelete files to delete<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @return number of deleted files<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   */<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    int deletedFileCount = 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (FileStatus file : filesToDelete) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      Path filePath = file.getPath();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        boolean success = this.fs.delete(filePath, false);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (success) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          deletedFileCount++;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.408"></a>
+<span class="sourceLineNo">409</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      } catch (IOException e) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        e = e instanceof RemoteException ?<a name="line.412"></a>
+<span class="sourceLineNo">413</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.warn("Error while deleting: " + filePath, e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    return deletedFileCount;<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>  @Override<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public synchronized void cleanup() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    for (T lc : this.cleanersChain) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      try {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        lc.stop("Exiting");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      } catch (Throwable t) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        LOG.warn("Stopping", t);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int getChorePoolSize() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return POOL.size;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @param enabled<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public boolean setEnabled(final boolean enabled) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.enabled.getAndSet(enabled);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public boolean getEnabled() { return this.enabled.get();<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>  private interface Action&lt;T&gt; {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    T act() throws IOException;<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    private final Path dir;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    private final boolean root;<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      this.dir = dir;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      this.root = root;<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>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    protected Boolean compute() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      LOG.trace("Cleaning under {}", dir);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      List&lt;FileStatus&gt; subDirs;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      List&lt;FileStatus&gt; files;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      try {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // which will fall through to succeeding.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      } catch (IOException ioe) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      boolean nullSubDirs = subDirs == null;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      if (nullSubDirs) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (files == null) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        LOG.trace("There is no file under {}", dir);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      if (!nullSubDirs) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        sortByConsumedSpace(subDirs);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        for (FileStatus subdir : subDirs) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          tasks.add(task);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          task.fork();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>      boolean result = true;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      // it is not the root dir, then task will try to delete it.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      if (result &amp;&amp; !root) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      return result;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>     * Get FileStatus with filter.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.514"></a>
+<span class="sourceLineNo">515</span>     * even though status is empty but not null.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>     * @param function a filter function<a name="line.516"></a>
+<span class="sourceLineNo">517</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.517"></a>
+<span class="sourceLineNo">518</span>     * @throws IOException if there's an error other than dir not existing<a name="line.518"></a>
+<span class="sourceLineNo">519</span>     */<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    /**<a name="line.524"></a>
+<span class="sourceLineNo">525</span>     * Perform a delete on a specified type.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>     * @param deletion a delete<a name="line.526"></a>
+<span class="sourceLineNo">527</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.527"></a>
+<span class="sourceLineNo">528</span>     * @return true if it deleted successfully, false otherwise<a name="line.528"></a>
+<span class="sourceLineNo">529</span>     */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      boolean deleted;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      try {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        deleted = deletion.act();<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        // message below.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            "exception details at TRACE.", dir);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        deleted = false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      } catch (IOException ioe) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  "happening, use following exception when asking on mailing list.",<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                  type, dir, ioe);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        deleted = false;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      return deleted;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    /**<a name="line.553"></a>
+<span class="sourceLineNo">554</span>     * Get cleaner results of subdirs.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>     * @param tasks subdirs cleaner tasks<a name="line.555"></a>
+<span class="sourceLineNo">556</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.556"></a>
+<span class="sourceLineNo">557</span>     * @throws IOException something happen during computation<a name="line.557"></a>
+<span class="sourceLineNo">558</span>     */<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      boolean cleaned = true;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        for (CleanerTask task : tasks) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          cleaned &amp;= task.get();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        }<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        throw new IOException(e);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      return cleaned;<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>
 
 
 


[25/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 546d2b6..3b8b827 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
@@ -180,3553 +180,3580 @@
 <span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
 <span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * run the cluster.  All others park themselves in their constructor until<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> *<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
-<span class="sourceLineNo">237</span> */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
-<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * true, do nothing otherwise.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    private final HMaster master;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private final long timeout;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final boolean haltOnTimeout;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    InitializationMonitor(HMaster master) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      super("MasterInitializationMonitor");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.master = master;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.setDaemon(true);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public void run() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          Thread.sleep(timeout);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          if (master.isInitialized()) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            if (haltOnTimeout) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              System.exit(-1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException ie) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  //instance into web context.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public static final String MASTER = "master";<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Manager and zk listener for master election<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Region server tracker<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private RegionServerTracker regionServerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Draining region server tracker<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // Tracker for load balancer state<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Tracker for split and merge state<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for region normalizer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  //Tracker for master maintenance mode setting<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // Metrics for the HMaster<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  final MetricsMaster metricsMaster;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  // file system manager for the master FS operations<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private MasterFileSystem fileSystemManager;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private MasterWalManager walManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // server manager to deal with region server info<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private volatile ServerManager serverManager;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // manager of assignment nodes in zookeeper<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AssignmentManager assignmentManager;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // manager of replication<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // buffer for "fatal error" notices from region servers<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // in the cluster. This is only used for assisting<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // operations/debugging.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  // flag set after we become the active master (used for testing)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private volatile boolean activeMaster = false;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // flag set after we complete initialization once active<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // flag set after master services are started,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // initialization may have not completed yet.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  volatile boolean serviceStarted = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // Maximum time we should run balancer for<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final int maxBlancingTime;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // Maximum percent of regions in transition when balancing<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private final double maxRitPercent;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private final LockManager lockManager = new LockManager(this);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private LoadBalancer balancer;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private RegionNormalizer normalizer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private BalancerChore balancerChore;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private RegionNormalizerChore normalizerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ClusterStatusChore clusterStatusChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  CatalogJanitor catalogJanitorChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private LogCleaner logCleaner;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private HFileCleaner hfileCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private MobCompactionChore mobCompactChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  // used to synchronize the mobCompactionStates<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  // save the information of mob compactions in tables.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  MasterCoprocessorHost cpHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private final boolean preLoadTableDescriptors;<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  // Time stamps for when a hmaster became active<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private long masterActiveTime;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private long masterFinishedInitializationTime;<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  private final boolean masterCheckCompression;<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  //should we check encryption settings at master side, default true<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean masterCheckEncryption;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  // monitor for snapshot of hbase tables<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  SnapshotManager snapshotManager;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // monitor for distributed procedures<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private MasterProcedureManagerHost mpmHost;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private volatile MasterQuotaManager quotaManager;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private QuotaObserverChore quotaObserverChore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private WALProcedureStore procedureStore;<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // handle table states<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private TableStateManager tableStateManager;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private long splitPlanCount;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private long mergePlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /* Handle favored nodes information */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private FavoredNodesManager favoredNodesManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private Server masterJettyServer;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static class RedirectServlet extends HttpServlet {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    private final int regionServerInfoPort;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.434"></a>
-<span class="sourceLineNo">435</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>     */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       regionServerInfoPort = infoServer.getPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       regionServerHostname = hostname;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public void doGet(HttpServletRequest request,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectHost = regionServerHostname;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if(redirectHost == null) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        redirectHost = request.getServerName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "to an appropriate hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String redirectUrl = request.getScheme() + "://"<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        + request.getRequestURI();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      response.sendRedirect(redirectUrl);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<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>   * Initializes the HMaster. The steps are as follows:<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;ol&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * &lt;/ol&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Remaining steps of initialization occur in<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * the master becomes the active one.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public HMaster(final Configuration conf)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      throws IOException, KeeperException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    super(conf);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    TraceUtil.initTracer(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Disable usage of meta replicas in the master<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      decorateMasterConfiguration(this.conf);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // should we check encryption settings at master side, default true<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // preload table descriptor at startup<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>      // Do we publish the status?<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              ClusterStatusPublisher.Publisher.class);<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (shouldPublish) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        if (publisherClass == null) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.530"></a>
-<span class="sourceLineNo">531</span>              " is not set - not publishing status");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        } else {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } else {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        this.activeMasterManager = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    } catch (Throwable t) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      // cause of failed startup is lost.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      LOG.error("Failed construction of Master", t);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      throw t;<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><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  // block in here until then.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void run() {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        Threads.setDaemonThreadRunning(new Thread(() -&gt; {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>            int infoPort = putUpJettyServer();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            startActiveMasterManager(infoPort);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          } catch (Throwable t) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            // Make sure we log the exception.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>            String error = "Failed to become Active Master";<a name="line.569"></a>
-<span class="sourceLineNo">570</span>            LOG.error(error, t);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>            // Abort should have been called already.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            if (!isAborted()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>              abort(error, t);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>            }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        }));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // the super run call will do this for us.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      super.run();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      if (this.clusterSchemaService != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // If on way out, then we are no longer active master.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        this.clusterSchemaService.stopAsync();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        try {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          this.clusterSchemaService.awaitTerminated(<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        } catch (TimeoutException te) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<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>  // return the actual infoPort, -1 means disable info server.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  private int putUpJettyServer() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<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>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    // -1 is for disabling info server, so no redirecting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if(infoPort == infoServer.getPort()) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return infoPort;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String msg =<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.614"></a>
-<span class="sourceLineNo">615</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              + "hbase.master.info.bindAddress";<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      LOG.error(msg);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      throw new IOException(msg);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // a second entire stack here.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    masterJettyServer = new Server();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    connector.setHost(addr);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    connector.setPort(infoPort);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    masterJettyServer.addConnector(connector);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    final String redirectHostname =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        StringUtils.isBlank(useThisHostnameInstead) ? null : useThisHostnameInstead;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>    final RedirectServlet redirect = new RedirectServlet(infoServer, redirectHostname);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    final WebAppContext context = new WebAppContext(null, "/", null, null, null, null, WebAppContext.NO_SESSIONS);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    context.addServlet(new ServletHolder(redirect), "/*");<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    context.setServer(masterJettyServer);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      masterJettyServer.start();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    } catch (Exception e) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throw new IOException("Failed to start redirecting jetty server", e);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    return connector.getLocalPort();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  }<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  @Override<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return builder -&gt; builder.setRegionReplication(conf.getInt(HConstants.META_REPLICAS_NUM, HConstants.DEFAULT_META_REPLICA_NUM));<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>   * For compatibility, if failed with regionserver credentials, try the master one<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  @Override<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    try {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      super.login(user, host);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } catch (IOException ie) {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      user.login("hbase.master.keytab.file",<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        "hbase.master.kerberos.principal", host);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>  /**<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * If configured to put regions on active master,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * wait till a backup master becomes active.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   * Otherwise, loop till the server is stopped or aborted.<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  @Override<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  protected void waitForMasterActive(){<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(conf);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    while (!(tablesOnMaster &amp;&amp; activeMaster) &amp;&amp; !isStopped() &amp;&amp; !isAborted()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      sleeper.sleep();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    }<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>  @VisibleForTesting<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public MasterRpcServices getMasterRpcServices() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    return (MasterRpcServices)rpcServices;<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>  public boolean balanceSwitch(final boolean b) throws IOException {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return getMasterRpcServices().switchBalancer(b, BalanceSwitchMode.ASYNC);<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>  @Override<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  protected String getProcessName() {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return MASTER;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
-<span class="sourceLineNo">692</span>  protected boolean canCreateBaseZNode() {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return true;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Override<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  protected boolean canUpdateTableDescriptor() {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    return true;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>  @Override<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return new MasterRpcServices(this);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  protected void configureInfoServer() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    infoServer.addServlet("master-status", "/master-status", MasterStatusServlet.class);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    infoServer.setAttribute(MASTER, this);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (LoadBalancer.isTablesOnMaster(conf)) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      super.configureInfoServer();<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><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return MasterDumpServlet.class;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public MetricsMaster getMasterMetrics() {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    return metricsMaster;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  /**<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * Initialize all ZK based system trackers. But do not include {@link RegionServerTracker}, it<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * should have already been initialized along with {@link ServerManager}.<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * &lt;/p&gt;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * &lt;p&gt;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * Will be overridden in tests.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * &lt;/p&gt;<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @VisibleForTesting<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  protected void initializeZKBasedSystemTrackers()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      throws IOException, InterruptedException, KeeperException, ReplicationException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    this.normalizer = RegionNormalizerFactory.getRegionNormalizer(conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    this.normalizer.setMasterServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    this.normalizer.setMasterRpcServices((MasterRpcServices)rpcServices);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    this.loadBalancerTracker = new LoadBalancerTracker(zooKeeper, this);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    this.loadBalancerTracker.start();<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>    this.regionNormalizerTracker = new RegionNormalizerTracker(zooKeeper, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    this.regionNormalizerTracker.start();<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    this.splitOrMergeTracker = new SplitOrMergeTracker(zooKeeper, conf, this);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    this.splitOrMergeTracker.start();<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>    this.replicationPeerManager = ReplicationPeerManager.create(zooKeeper, conf);<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this, this.serverManager);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    this.drainingServerTracker.start();<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    this.maintenanceModeTracker = new MasterMaintenanceModeTracker(zooKeeper);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    this.maintenanceModeTracker.start();<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String clientQuorumServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    boolean clientZkObserverMode = conf.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    if (clientQuorumServers != null &amp;&amp; !clientZkObserverMode) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      // we need to take care of the ZK information synchronization<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      // if given client ZK are not observer nodes<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      ZKWatcher clientZkWatcher = new ZKWatcher(conf,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>          getProcessName() + ":" + rpcServices.getSocketAddress().getPort() + "-clientZK", this,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          false, true);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.metaLocationSyncer = new MetaLocationSyncer(zooKeeper, clientZkWatcher, this);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      this.metaLocationSyncer.start();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      this.masterAddressSyncer = new MasterAddressSyncer(zooKeeper, clientZkWatcher, this);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      this.masterAddressSyncer.start();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      // set cluster id is a one-go effort<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      ZKClusterId.setClusterId(clientZkWatcher, fileSystemManager.getClusterId());<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // Set the cluster as up.  If new RSs, they'll be waiting on this before<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    // going ahead with their startup.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    boolean wasUp = this.clusterStatusTracker.isClusterUp();<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    if (!wasUp) this.clusterStatusTracker.setClusterUp();<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    LOG.info("Active/primary master=" + this.serverName +<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        ", sessionid=0x" +<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +<a name="line.782"></a>
-<span class="sourceLineNo">783</span>        ", setting cluster-up flag (Was=" + wasUp + ")");<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>    // create/initialize the snapshot manager and other procedure managers<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    this.snapshotManager = new SnapshotManager();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    this.mpmHost = new MasterProcedureManagerHost();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    this.mpmHost.register(this.snapshotManager);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    this.mpmHost.register(new MasterFlushTableProcedureManager());<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    this.mpmHost.loadProcedures(conf);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    this.mpmHost.initialize(this, this.metricsMaster);<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * Finish initialization of HMaster after becoming the primary master.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * &lt;p/&gt;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * The startup order is a bit complicated but very important, do not change it unless you know<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * what you are doing.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;ol&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;Initialize file system based components - file system manager, wal manager, table<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * descriptors, etc&lt;/li&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * &lt;li&gt;Publish cluster id&lt;/li&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * &lt;li&gt;Here comes the most complicated part - initialize server manager, assignment manager and<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * region server tracker<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * &lt;ol type='i'&gt;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * &lt;li&gt;Create server manager&lt;/li&gt;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * &lt;li&gt;Create procedure executor, load the procedures, but do not start workers. We will start it<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * later after we finish scheduling SCPs to avoid scheduling duplicated SCPs for the same<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * server&lt;/li&gt;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * &lt;li&gt;Create assignment manager and start it, load the meta region state, but do not load data<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * from meta region&lt;/li&gt;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * &lt;li&gt;Start region server tracker, construct the online servers set and find out dead servers and<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * schedule SCP for them. The online servers will be constructed by scanning zk, and we will also<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * scan the wal directory to find out possible live region servers, and the differences between<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * these two sets are the dead servers&lt;/li&gt;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * &lt;/ol&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * &lt;/li&gt;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * &lt;li&gt;If this is a new deploy, schedule a InitMetaProcedure to initialize meta&lt;/li&gt;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * &lt;li&gt;Start necessary service threads - balancer, catalog janior, executor services, and also the<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * procedure executor, etc. Notice that the balancer must be created first as assignment manager<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * may use it when assigning regions.&lt;/li&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * &lt;li&gt;Wait for meta to be initialized if necesssary, start table state manager.&lt;/li&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * &lt;li&gt;Wait for enough region servers to check-in&lt;/li&gt;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * &lt;li&gt;Let assignment manager load data from meta and construct region states&lt;/li&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * &lt;li&gt;Start all other things such as chore services, etc&lt;/li&gt;<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * &lt;/ol&gt;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * &lt;p/&gt;<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * Notice that now we will not schedule a special procedure to make meta online(unless the first<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * time where meta has not been created yet), we will rely on SCP to bring meta online.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  private void finishActiveMasterInitialization(MonitoredTask status) throws IOException,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          InterruptedException, KeeperException, ReplicationException {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Thread zombieDetector = new Thread(new InitializationMonitor(this),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        "ActiveMasterInitializationMonitor-" + System.currentTimeMillis());<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    zombieDetector.setDaemon(true);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    zombieDetector.start();<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>     * We are active master now... go initialize components we need to run.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    status.setStatus("Initializing Master file system");<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.masterActiveTime = System.currentTimeMillis();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    // Initialize the chunkCreator<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    initializeMemStoreChunkCreator();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    this.walManager = new MasterWalManager(this);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>    // enable table descriptors cache<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    this.tableDescriptors.setCacheOn();<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // warm-up HTDs cache on master initialization<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (preLoadTableDescriptors) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      status.setStatus("Pre-loading table descriptors");<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.tableDescriptors.getAll();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Publish cluster ID; set it in Master too. The superclass RegionServer does this later but<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // only after it has checked in with the Master. At least a few tests ask Master for clusterId<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    // before it has called its run method and before RegionServer has done the reportForDuty.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    ClusterId clusterId = fileSystemManager.getClusterId();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    status.setStatus("Publishing Cluster ID " + clusterId + " in ZooKeeper");<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    this.clusterId = clusterId.toString();<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.zookeeper.KeeperException;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.Server;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.Logger;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.slf4j.LoggerFactory;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * run the cluster.  All others park themselves in their constructor until<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> *<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> *<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.235"></a>
+<span class="sourceLineNo">236</span> *<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @see org.apache.zookeeper.Watcher<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>@SuppressWarnings("deprecation")<a name="line.240"></a>
+<span class="sourceLineNo">241</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private static class InitializationMonitor extends HasThread {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.254"></a>
+<span class="sourceLineNo">255</span>     * true, do nothing otherwise.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public static final boolean HALT_DEFAULT = false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private final HMaster master;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private final long timeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private final boolean haltOnTimeout;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    InitializationMonitor(HMaster master) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      super("MasterInitializationMonitor");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.master = master;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.setDaemon(true);<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>    public void run() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Thread.sleep(timeout);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (master.isInitialized()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.281"></a>
+<span class="sourceLineNo">282</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            if (haltOnTimeout) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  //instance into web context.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String MASTER = "master";<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  // Manager and zk listener for master election<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private final ActiveMasterManager activeMasterManager;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  // Region server tracker<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private RegionServerTracker regionServerTracker;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Draining region server tracker<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private DrainingServerTracker drainingServerTracker;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // Tracker for load balancer state<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // Tracker for split and merge state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Tracker for region normalizer state<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  //Tracker for master maintenance mode setting<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private ClusterSchemaService clusterSchemaService;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    "hbase.master.wait.on.service.seconds";<a name="line.325"></a>
+<span class="sourceLineNo">326

<TRUNCATED>

[16/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
index f5ac8fc..9931529 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
@@ -280,309 +280,303 @@
 <span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        POOL.latchCountUp();<a name="line.273"></a>
 <span class="sourceLineNo">274</span>        if (runCleaner()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          if (LOG.isTraceEnabled()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        } else {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          if (LOG.isTraceEnabled()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.trace("WALs outstanding under {}", oldFileDir);<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>      } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        POOL.latchCountDown();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (LOG.isTraceEnabled()) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private void preRunCleaner() {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<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>  public Boolean runCleaner() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    preRunCleaner();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    POOL.submit(task);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    return task.join();<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>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Sort the given list in (descending) order of the space each element takes<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // no need to sort for empty or single directory<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      return;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      @Override<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<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>      private long getSpace(FileStatus f) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        Long cached = directorySpaces.get(f);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (cached != null) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          return cached;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        try {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          long space =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          directorySpaces.put(f, space);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          return space;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } catch (IOException e) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          return -1;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    });<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * necessary.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @return true iff successfully deleted all files<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (files == null) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return true;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // first check to see if the path is valid<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    for (FileStatus file : files) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (validate(file.getPath())) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        validFiles.add(file);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // check each of the cleaners for the valid files<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (T cleaner : cleanersChain) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.375"></a>
-<span class="sourceLineNo">376</span>            + this.oldFileDir);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return false;<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>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>      // trace which cleaner is holding on to each file<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (LOG.isTraceEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        for (FileStatus file : deletableValidFiles) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          if (!filteredFileSet.contains(file)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return deleteFiles(filesToDelete) == files.size();<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>   * Delete the given files<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param filesToDelete files to delete<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @return number of deleted files<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int deletedFileCount = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    for (FileStatus file : filesToDelete) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Path filePath = file.getPath();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      try {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        boolean success = this.fs.delete(filePath, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        if (success) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          deletedFileCount++;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      } catch (IOException e) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        e = e instanceof RemoteException ?<a name="line.418"></a>
-<span class="sourceLineNo">419</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        LOG.warn("Error while deleting: " + filePath, e);<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>    return deletedFileCount;<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>  @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public synchronized void cleanup() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (T lc : this.cleanersChain) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      try {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        lc.stop("Exiting");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      } catch (Throwable t) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        LOG.warn("Stopping", t);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @VisibleForTesting<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  int getChorePoolSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return POOL.size;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * @param enabled<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public boolean setEnabled(final boolean enabled) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return this.enabled.getAndSet(enabled);<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 boolean getEnabled() { return this.enabled.get();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private interface Action&lt;T&gt; {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    T act() throws IOException;<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>  /**<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    private final Path dir;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    private final boolean root;<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      this.dir = dir;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      this.root = root;<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>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    protected Boolean compute() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      LOG.debug("Cleaning under {}", dir);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      List&lt;FileStatus&gt; subDirs;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      List&lt;FileStatus&gt; files;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      try {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        // which will fall through to succeeding.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      } catch (IOException ioe) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        return false;<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>      boolean nullSubDirs = subDirs == null;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (nullSubDirs) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (files == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        LOG.trace("There is no file under {}", dir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (!nullSubDirs) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        sortByConsumedSpace(subDirs);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        for (FileStatus subdir : subDirs) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          tasks.add(task);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          task.fork();<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      boolean result = true;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // it is not the root dir, then task will try to delete it.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (result &amp;&amp; !root) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return result;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>     * Get FileStatus with filter.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>     * even though status is empty but not null.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     * @param function a filter function<a name="line.522"></a>
-<span class="sourceLineNo">523</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.523"></a>
-<span class="sourceLineNo">524</span>     * @throws IOException if there's an error other than dir not existing<a name="line.524"></a>
-<span class="sourceLineNo">525</span>     */<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * Perform a delete on a specified type.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * @param deletion a delete<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * @return true if it deleted successfully, false otherwise<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      boolean deleted;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      try {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        deleted = deletion.act();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        // message below.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            "exception details at TRACE.", dir);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        deleted = false;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      } catch (IOException ioe) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.550"></a>
-<span class="sourceLineNo">551</span>                  "happening, use following exception when asking on mailing list.",<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  type, dir, ioe);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        deleted = false;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      return deleted;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    /**<a name="line.559"></a>
-<span class="sourceLineNo">560</span>     * Get cleaner results of subdirs.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>     * @param tasks subdirs cleaner tasks<a name="line.561"></a>
-<span class="sourceLineNo">562</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.562"></a>
-<span class="sourceLineNo">563</span>     * @throws IOException something happen during computation<a name="line.563"></a>
-<span class="sourceLineNo">564</span>     */<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      boolean cleaned = true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        for (CleanerTask task : tasks) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          cleaned &amp;= task.get();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        throw new IOException(e);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return cleaned;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>}<a name="line.577"></a>
+<span class="sourceLineNo">275</span>          LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } else {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.trace("WALs outstanding under {}", oldFileDir);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } finally {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        POOL.latchCountDown();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } else {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void preRunCleaner() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public Boolean runCleaner() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    preRunCleaner();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    POOL.submit(task);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return task.join();<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>   * Sort the given list in (descending) order of the space each element takes<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // no need to sort for empty or single directory<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      return;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      private long getSpace(FileStatus f) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        Long cached = directorySpaces.get(f);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (cached != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          return cached;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        try {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          long space =<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          directorySpaces.put(f, space);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          return space;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          return -1;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    });<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * necessary.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true iff successfully deleted all files<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (files == null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return true;<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>    // first check to see if the path is valid<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (FileStatus file : files) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (validate(file.getPath())) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        validFiles.add(file);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // check each of the cleaners for the valid files<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    for (T cleaner : cleanersChain) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            + this.oldFileDir);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        return false;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // trace which cleaner is holding on to each file<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (LOG.isTraceEnabled()) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        for (FileStatus file : deletableValidFiles) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          if (!filteredFileSet.contains(file)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return deleteFiles(filesToDelete) == files.size();<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>  /**<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * Delete the given files<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param filesToDelete files to delete<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @return number of deleted files<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   */<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    int deletedFileCount = 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (FileStatus file : filesToDelete) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      Path filePath = file.getPath();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        boolean success = this.fs.delete(filePath, false);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (success) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          deletedFileCount++;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.408"></a>
+<span class="sourceLineNo">409</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      } catch (IOException e) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        e = e instanceof RemoteException ?<a name="line.412"></a>
+<span class="sourceLineNo">413</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.warn("Error while deleting: " + filePath, e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    return deletedFileCount;<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>  @Override<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public synchronized void cleanup() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    for (T lc : this.cleanersChain) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      try {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        lc.stop("Exiting");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      } catch (Throwable t) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        LOG.warn("Stopping", t);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int getChorePoolSize() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return POOL.size;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @param enabled<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public boolean setEnabled(final boolean enabled) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.enabled.getAndSet(enabled);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public boolean getEnabled() { return this.enabled.get();<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>  private interface Action&lt;T&gt; {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    T act() throws IOException;<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    private final Path dir;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    private final boolean root;<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      this.dir = dir;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      this.root = root;<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>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    protected Boolean compute() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      LOG.trace("Cleaning under {}", dir);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      List&lt;FileStatus&gt; subDirs;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      List&lt;FileStatus&gt; files;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      try {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // which will fall through to succeeding.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      } catch (IOException ioe) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      boolean nullSubDirs = subDirs == null;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      if (nullSubDirs) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (files == null) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        LOG.trace("There is no file under {}", dir);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      if (!nullSubDirs) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        sortByConsumedSpace(subDirs);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        for (FileStatus subdir : subDirs) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          tasks.add(task);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          task.fork();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>      boolean result = true;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      // it is not the root dir, then task will try to delete it.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      if (result &amp;&amp; !root) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      return result;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>     * Get FileStatus with filter.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.514"></a>
+<span class="sourceLineNo">515</span>     * even though status is empty but not null.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>     * @param function a filter function<a name="line.516"></a>
+<span class="sourceLineNo">517</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.517"></a>
+<span class="sourceLineNo">518</span>     * @throws IOException if there's an error other than dir not existing<a name="line.518"></a>
+<span class="sourceLineNo">519</span>     */<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    /**<a name="line.524"></a>
+<span class="sourceLineNo">525</span>     * Perform a delete on a specified type.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>     * @param deletion a delete<a name="line.526"></a>
+<span class="sourceLineNo">527</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.527"></a>
+<span class="sourceLineNo">528</span>     * @return true if it deleted successfully, false otherwise<a name="line.528"></a>
+<span class="sourceLineNo">529</span>     */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      boolean deleted;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      try {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        deleted = deletion.act();<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        // message below.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            "exception details at TRACE.", dir);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        deleted = false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      } catch (IOException ioe) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  "happening, use following exception when asking on mailing list.",<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                  type, dir, ioe);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        deleted = false;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      return deleted;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    /**<a name="line.553"></a>
+<span class="sourceLineNo">554</span>     * Get cleaner results of subdirs.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>     * @param tasks subdirs cleaner tasks<a name="line.555"></a>
+<span class="sourceLineNo">556</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.556"></a>
+<span class="sourceLineNo">557</span>     * @throws IOException something happen during computation<a name="line.557"></a>
+<span class="sourceLineNo">558</span>     */<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      boolean cleaned = true;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        for (CleanerTask task : tasks) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          cleaned &amp;= task.get();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        }<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        throw new IOException(e);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      return cleaned;<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.HFileDeleteTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.HFileDeleteTask.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.HFileDeleteTask.html
index a587380..224fc91 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.HFileDeleteTask.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.HFileDeleteTask.html
@@ -243,7 +243,7 @@
 <span class="sourceLineNo">235</span>          break;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>        }<a name="line.236"></a>
 <span class="sourceLineNo">237</span>        if (task != null) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          LOG.debug("Removing {}", task.filePath);<a name="line.238"></a>
+<span class="sourceLineNo">238</span>          LOG.trace("Removing {}", task.filePath);<a name="line.238"></a>
 <span class="sourceLineNo">239</span>          boolean succeed;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>          try {<a name="line.240"></a>
 <span class="sourceLineNo">241</span>            succeed = this.fs.delete(task.filePath, false);<a name="line.241"></a>
@@ -266,13 +266,13 @@
 <span class="sourceLineNo">258</span>  private void countDeletedFiles(boolean isLargeFile, boolean fromLargeQueue) {<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    if (isLargeFile) {<a name="line.259"></a>
 <span class="sourceLineNo">260</span>      if (deletedLargeFiles.get() == Long.MAX_VALUE) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        LOG.info("Deleted more than Long.MAX_VALUE large files, reset counter to 0");<a name="line.261"></a>
+<span class="sourceLineNo">261</span>        LOG.debug("Deleted more than Long.MAX_VALUE large files, reset counter to 0");<a name="line.261"></a>
 <span class="sourceLineNo">262</span>        deletedLargeFiles.set(0L);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span>      deletedLargeFiles.incrementAndGet();<a name="line.264"></a>
 <span class="sourceLineNo">265</span>    } else {<a name="line.265"></a>
 <span class="sourceLineNo">266</span>      if (deletedSmallFiles.get() == Long.MAX_VALUE) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        LOG.info("Deleted more than Long.MAX_VALUE small files, reset counter to 0");<a name="line.267"></a>
+<span class="sourceLineNo">267</span>        LOG.debug("Deleted more than Long.MAX_VALUE small files, reset counter to 0");<a name="line.267"></a>
 <span class="sourceLineNo">268</span>        deletedSmallFiles.set(0L);<a name="line.268"></a>
 <span class="sourceLineNo">269</span>      }<a name="line.269"></a>
 <span class="sourceLineNo">270</span>      if (fromLargeQueue) {<a name="line.270"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html
index a587380..224fc91 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/HFileCleaner.html
@@ -243,7 +243,7 @@
 <span class="sourceLineNo">235</span>          break;<a name="line.235"></a>
 <span class="sourceLineNo">236</span>        }<a name="line.236"></a>
 <span class="sourceLineNo">237</span>        if (task != null) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>          LOG.debug("Removing {}", task.filePath);<a name="line.238"></a>
+<span class="sourceLineNo">238</span>          LOG.trace("Removing {}", task.filePath);<a name="line.238"></a>
 <span class="sourceLineNo">239</span>          boolean succeed;<a name="line.239"></a>
 <span class="sourceLineNo">240</span>          try {<a name="line.240"></a>
 <span class="sourceLineNo">241</span>            succeed = this.fs.delete(task.filePath, false);<a name="line.241"></a>
@@ -266,13 +266,13 @@
 <span class="sourceLineNo">258</span>  private void countDeletedFiles(boolean isLargeFile, boolean fromLargeQueue) {<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    if (isLargeFile) {<a name="line.259"></a>
 <span class="sourceLineNo">260</span>      if (deletedLargeFiles.get() == Long.MAX_VALUE) {<a name="line.260"></a>
-<span class="sourceLineNo">261</span>        LOG.info("Deleted more than Long.MAX_VALUE large files, reset counter to 0");<a name="line.261"></a>
+<span class="sourceLineNo">261</span>        LOG.debug("Deleted more than Long.MAX_VALUE large files, reset counter to 0");<a name="line.261"></a>
 <span class="sourceLineNo">262</span>        deletedLargeFiles.set(0L);<a name="line.262"></a>
 <span class="sourceLineNo">263</span>      }<a name="line.263"></a>
 <span class="sourceLineNo">264</span>      deletedLargeFiles.incrementAndGet();<a name="line.264"></a>
 <span class="sourceLineNo">265</span>    } else {<a name="line.265"></a>
 <span class="sourceLineNo">266</span>      if (deletedSmallFiles.get() == Long.MAX_VALUE) {<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        LOG.info("Deleted more than Long.MAX_VALUE small files, reset counter to 0");<a name="line.267"></a>
+<span class="sourceLineNo">267</span>        LOG.debug("Deleted more than Long.MAX_VALUE small files, reset counter to 0");<a name="line.267"></a>
 <span class="sourceLineNo">268</span>        deletedSmallFiles.set(0L);<a name="line.268"></a>
 <span class="sourceLineNo">269</span>      }<a name="line.269"></a>
 <span class="sourceLineNo">270</span>      if (fromLargeQueue) {<a name="line.270"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
index d8db8cc..f0e1d75 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
@@ -53,23 +53,20 @@
 <span class="sourceLineNo">045</span><a name="line.45"></a>
 <span class="sourceLineNo">046</span>  public void setupSaslHandler(ChannelPipeline p) {<a name="line.46"></a>
 <span class="sourceLineNo">047</span>    String qop = (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    if (LOG.isDebugEnabled()) {<a name="line.48"></a>
-<span class="sourceLineNo">049</span>      LOG.debug("SASL client context established. Negotiated QoP: " + qop);<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    }<a name="line.50"></a>
-<span class="sourceLineNo">051</span><a name="line.51"></a>
-<span class="sourceLineNo">052</span>    if (qop == null || "auth".equalsIgnoreCase(qop)) {<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      return;<a name="line.53"></a>
-<span class="sourceLineNo">054</span>    }<a name="line.54"></a>
-<span class="sourceLineNo">055</span>    // add wrap and unwrap handlers to pipeline.<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    p.addFirst(new SaslWrapHandler(saslClient),<a name="line.56"></a>
-<span class="sourceLineNo">057</span>      new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4),<a name="line.57"></a>
-<span class="sourceLineNo">058</span>      new SaslUnwrapHandler(saslClient));<a name="line.58"></a>
-<span class="sourceLineNo">059</span>  }<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>  public String getSaslQOP() {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>    return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>}<a name="line.64"></a>
+<span class="sourceLineNo">048</span>    LOG.trace("SASL client context established. Negotiated QoP {}", qop);<a name="line.48"></a>
+<span class="sourceLineNo">049</span>    if (qop == null || "auth".equalsIgnoreCase(qop)) {<a name="line.49"></a>
+<span class="sourceLineNo">050</span>      return;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>    }<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    // add wrap and unwrap handlers to pipeline.<a name="line.52"></a>
+<span class="sourceLineNo">053</span>    p.addFirst(new SaslWrapHandler(saslClient),<a name="line.53"></a>
+<span class="sourceLineNo">054</span>      new LengthFieldBasedFrameDecoder(Integer.MAX_VALUE, 0, 4, 0, 4),<a name="line.54"></a>
+<span class="sourceLineNo">055</span>      new SaslUnwrapHandler(saslClient));<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>  public String getSaslQOP() {<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    return (String) saslClient.getNegotiatedProperty(Sasl.QOP);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html b/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
index b4a36f5..b5166e9 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
@@ -79,99 +79,95 @@
 <span class="sourceLineNo">071</span>  }<a name="line.71"></a>
 <span class="sourceLineNo">072</span><a name="line.72"></a>
 <span class="sourceLineNo">073</span>  private void writeResponse(ChannelHandlerContext ctx, byte[] response) {<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    if (LOG.isDebugEnabled()) {<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      LOG.debug("Will send token of size " + response.length + " from initSASLContext.");<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    }<a name="line.76"></a>
-<span class="sourceLineNo">077</span>    ctx.writeAndFlush(<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      ctx.alloc().buffer(4 + response.length).writeInt(response.length).writeBytes(response));<a name="line.78"></a>
-<span class="sourceLineNo">079</span>  }<a name="line.79"></a>
-<span class="sourceLineNo">080</span><a name="line.80"></a>
-<span class="sourceLineNo">081</span>  private void tryComplete(ChannelHandlerContext ctx) {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    if (!saslRpcClient.isComplete()) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return;<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>    saslRpcClient.setupSaslHandler(ctx.pipeline());<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    setCryptoAESOption();<a name="line.87"></a>
-<span class="sourceLineNo">088</span><a name="line.88"></a>
-<span class="sourceLineNo">089</span>    saslPromise.setSuccess(true);<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  }<a name="line.90"></a>
-<span class="sourceLineNo">091</span><a name="line.91"></a>
-<span class="sourceLineNo">092</span>  private void setCryptoAESOption() {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.93"></a>
-<span class="sourceLineNo">094</span>        getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    needProcessConnectionHeader = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        "hbase.rpc.crypto.encryption.aes.enabled", false);<a name="line.96"></a>
-<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
-<span class="sourceLineNo">098</span><a name="line.98"></a>
-<span class="sourceLineNo">099</span>  public boolean isNeedProcessConnectionHeader() {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    return needProcessConnectionHeader;<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  @Override<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  public void handlerAdded(ChannelHandlerContext ctx) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    try {<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      byte[] initialResponse = ugi.doAs(new PrivilegedExceptionAction&lt;byte[]&gt;() {<a name="line.106"></a>
-<span class="sourceLineNo">107</span><a name="line.107"></a>
-<span class="sourceLineNo">108</span>        @Override<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        public byte[] run() throws Exception {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>          return saslRpcClient.getInitialResponse();<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        }<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      });<a name="line.112"></a>
-<span class="sourceLineNo">113</span>      if (initialResponse != null) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span>        writeResponse(ctx, initialResponse);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      }<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      tryComplete(ctx);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    } catch (Exception e) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      // the exception thrown by handlerAdded will not be passed to the exceptionCaught below<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      // because netty will remove a handler if handlerAdded throws an exception.<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      exceptionCaught(ctx, e);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  }<a name="line.122"></a>
-<span class="sourceLineNo">123</span><a name="line.123"></a>
-<span class="sourceLineNo">124</span>  @Override<a name="line.124"></a>
-<span class="sourceLineNo">125</span>  protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    int len = msg.readInt();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    if (len == SaslUtil.SWITCH_TO_SIMPLE_AUTH) {<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      saslRpcClient.dispose();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      if (saslRpcClient.fallbackAllowed) {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        saslPromise.trySuccess(false);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      } else {<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        saslPromise.tryFailure(new FallbackDisallowedException());<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      }<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      return;<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    if (LOG.isDebugEnabled()) {<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      LOG.debug("Will read input token of size " + len + " for processing by initSASLContext");<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    final byte[] challenge = new byte[len];<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    msg.readBytes(challenge);<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    byte[] response = ugi.doAs(new PrivilegedExceptionAction&lt;byte[]&gt;() {<a name="line.141"></a>
-<span class="sourceLineNo">142</span><a name="line.142"></a>
-<span class="sourceLineNo">143</span>      @Override<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      public byte[] run() throws Exception {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>        return saslRpcClient.evaluateChallenge(challenge);<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      }<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    });<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    if (response != null) {<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      writeResponse(ctx, response);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    tryComplete(ctx);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>  }<a name="line.152"></a>
-<span class="sourceLineNo">153</span><a name="line.153"></a>
-<span class="sourceLineNo">154</span>  @Override<a name="line.154"></a>
-<span class="sourceLineNo">155</span>  public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    saslRpcClient.dispose();<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    saslPromise.tryFailure(new IOException("Connection closed"));<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    ctx.fireChannelInactive();<a name="line.158"></a>
-<span class="sourceLineNo">159</span>  }<a name="line.159"></a>
-<span class="sourceLineNo">160</span><a name="line.160"></a>
-<span class="sourceLineNo">161</span>  @Override<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    saslRpcClient.dispose();<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    saslPromise.tryFailure(cause);<a name="line.164"></a>
-<span class="sourceLineNo">165</span>  }<a name="line.165"></a>
-<span class="sourceLineNo">166</span>}<a name="line.166"></a>
+<span class="sourceLineNo">074</span>    LOG.trace("Sending token size={} from initSASLContext.", response.length);<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    ctx.writeAndFlush(<a name="line.75"></a>
+<span class="sourceLineNo">076</span>      ctx.alloc().buffer(4 + response.length).writeInt(response.length).writeBytes(response));<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  }<a name="line.77"></a>
+<span class="sourceLineNo">078</span><a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private void tryComplete(ChannelHandlerContext ctx) {<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    if (!saslRpcClient.isComplete()) {<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      return;<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>    saslRpcClient.setupSaslHandler(ctx.pipeline());<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    setCryptoAESOption();<a name="line.85"></a>
+<span class="sourceLineNo">086</span><a name="line.86"></a>
+<span class="sourceLineNo">087</span>    saslPromise.setSuccess(true);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  private void setCryptoAESOption() {<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    boolean saslEncryptionEnabled = SaslUtil.QualityOfProtection.PRIVACY.<a name="line.91"></a>
+<span class="sourceLineNo">092</span>        getSaslQop().equalsIgnoreCase(saslRpcClient.getSaslQOP());<a name="line.92"></a>
+<span class="sourceLineNo">093</span>    needProcessConnectionHeader = saslEncryptionEnabled &amp;&amp; conf.getBoolean(<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        "hbase.rpc.crypto.encryption.aes.enabled", false);<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
+<span class="sourceLineNo">096</span><a name="line.96"></a>
+<span class="sourceLineNo">097</span>  public boolean isNeedProcessConnectionHeader() {<a name="line.97"></a>
+<span class="sourceLineNo">098</span>    return needProcessConnectionHeader;<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>  @Override<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  public void handlerAdded(ChannelHandlerContext ctx) {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    try {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>      byte[] initialResponse = ugi.doAs(new PrivilegedExceptionAction&lt;byte[]&gt;() {<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>        @Override<a name="line.106"></a>
+<span class="sourceLineNo">107</span>        public byte[] run() throws Exception {<a name="line.107"></a>
+<span class="sourceLineNo">108</span>          return saslRpcClient.getInitialResponse();<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>      if (initialResponse != null) {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>        writeResponse(ctx, initialResponse);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      }<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      tryComplete(ctx);<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    } catch (Exception e) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      // the exception thrown by handlerAdded will not be passed to the exceptionCaught below<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      // because netty will remove a handler if handlerAdded throws an exception.<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      exceptionCaught(ctx, e);<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>  @Override<a name="line.122"></a>
+<span class="sourceLineNo">123</span>  protected void channelRead0(ChannelHandlerContext ctx, ByteBuf msg) throws Exception {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    int len = msg.readInt();<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    if (len == SaslUtil.SWITCH_TO_SIMPLE_AUTH) {<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      saslRpcClient.dispose();<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (saslRpcClient.fallbackAllowed) {<a name="line.127"></a>
+<span class="sourceLineNo">128</span>        saslPromise.trySuccess(false);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>      } else {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        saslPromise.tryFailure(new FallbackDisallowedException());<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      return;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    LOG.trace("Reading input token size={} for processing by initSASLContext", len);<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    final byte[] challenge = new byte[len];<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    msg.readBytes(challenge);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    byte[] response = ugi.doAs(new PrivilegedExceptionAction&lt;byte[]&gt;() {<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>      @Override<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      public byte[] run() throws Exception {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        return saslRpcClient.evaluateChallenge(challenge);<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>    if (response != null) {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      writeResponse(ctx, response);<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    tryComplete(ctx);<a name="line.147"></a>
+<span class="sourceLineNo">148</span>  }<a name="line.148"></a>
+<span class="sourceLineNo">149</span><a name="line.149"></a>
+<span class="sourceLineNo">150</span>  @Override<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void channelInactive(ChannelHandlerContext ctx) throws Exception {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    saslRpcClient.dispose();<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    saslPromise.tryFailure(new IOException("Connection closed"));<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    ctx.fireChannelInactive();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>  }<a name="line.155"></a>
+<span class="sourceLineNo">156</span><a name="line.156"></a>
+<span class="sourceLineNo">157</span>  @Override<a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public void exceptionCaught(ChannelHandlerContext ctx, Throwable cause) {<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    saslRpcClient.dispose();<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    saslPromise.tryFailure(cause);<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>
 
 
 


[27/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html
index 7cea275..83e66fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html
@@ -389,158 +389,169 @@
 <span class="sourceLineNo">381</span>                calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.381"></a>
 <span class="sourceLineNo">382</span><a name="line.382"></a>
 <span class="sourceLineNo">383</span>            Scan boundedScan = new Scan(scan);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>            boundedScan.setStartRow(sp[i]);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            boundedScan.setStopRow(sp[i + 1]);<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<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>      } else {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          List&lt;String&gt; hosts =<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    return splits;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * only when localityEnabled is true.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      throws IOException {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (localityEnabled) { // care block locality<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return getBestLocations(conf,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    } else { // do not care block locality<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      return null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * local.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * host with the best locality.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      numTopsAtMost = 1;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    locations.add(topHost.getHost());<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (top == 1) { // only care about the top host<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return locations;<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>    // When top &gt;= 2,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    double cutoffMultiplier<a name="line.453"></a>
-<span class="sourceLineNo">454</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.456"></a>
+<span class="sourceLineNo">384</span>            if (scan.getStartRow().length == 0) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              boundedScan.withStartRow(sp[i]);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>            } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>              boundedScan.withStartRow(<a name="line.387"></a>
+<span class="sourceLineNo">388</span>                Bytes.compareTo(scan.getStartRow(), sp[i]) &gt; 0 ? scan.getStartRow() : sp[i]);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>            if (scan.getStopRow().length == 0) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              boundedScan.withStopRow(sp[i + 1]);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              boundedScan.withStopRow(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                Bytes.compareTo(scan.getStopRow(), sp[i + 1]) &lt; 0 ? scan.getStopRow() : sp[i + 1]);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          List&lt;String&gt; hosts =<a name="line.404"></a>
+<span class="sourceLineNo">405</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    return splits;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * only when localityEnabled is true.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   */<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    if (localityEnabled) { // care block locality<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      return getBestLocations(conf,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    } else { // do not care block locality<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return null;<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * local.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * host with the best locality.<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      numTopsAtMost = 1;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    locations.add(topHost.getHost());<a name="line.456"></a>
 <span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        locations.add(hostAndWeights[i].getHost());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      } else {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        // As hostAndWeights is in descending order,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        break;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return locations;<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>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private static String getSnapshotName(Configuration conf) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    if (snapshotName == null) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return snapshotName;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param conf the job to configuration<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param snapshotName the name of the snapshot to read from<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @throws IOException if an error occurs<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    setInput(conf, snapshotName, restoreDir, null, 1);<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>  /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param conf the job to configure<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param snapshotName the name of the snapshot to read from<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * After the job is finished, restoreDir can be deleted.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @throws IOException if an error occurs<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.510"></a>
-<span class="sourceLineNo">511</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    }<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    if (splitAlgo != null) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // TODO: restore from record readers to parallelize.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>}<a name="line.535"></a>
+<span class="sourceLineNo">458</span>    if (top == 1) { // only care about the top host<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return locations;<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>    // When top &gt;= 2,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    double cutoffMultiplier<a name="line.464"></a>
+<span class="sourceLineNo">465</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        locations.add(hostAndWeights[i].getHost());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      } else {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // As hostAndWeights is in descending order,<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        break;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    return locations;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>  private static String getSnapshotName(Configuration conf) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if (snapshotName == null) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    return snapshotName;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>  /**<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param conf the job to configuration<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @param snapshotName the name of the snapshot to read from<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * @throws IOException if an error occurs<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      throws IOException {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    setInput(conf, snapshotName, restoreDir, null, 1);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param conf the job to configure<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param snapshotName the name of the snapshot to read from<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * After the job is finished, restoreDir can be deleted.<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * @throws IOException if an error occurs<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          throws IOException {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    if (splitAlgo != null) {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    // TODO: restore from record readers to parallelize.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html
index 7cea275..83e66fd 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html
@@ -389,158 +389,169 @@
 <span class="sourceLineNo">381</span>                calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.381"></a>
 <span class="sourceLineNo">382</span><a name="line.382"></a>
 <span class="sourceLineNo">383</span>            Scan boundedScan = new Scan(scan);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>            boundedScan.setStartRow(sp[i]);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            boundedScan.setStopRow(sp[i + 1]);<a name="line.385"></a>
-<span class="sourceLineNo">386</span><a name="line.386"></a>
-<span class="sourceLineNo">387</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<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>      } else {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.391"></a>
-<span class="sourceLineNo">392</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>          List&lt;String&gt; hosts =<a name="line.393"></a>
-<span class="sourceLineNo">394</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.394"></a>
-<span class="sourceLineNo">395</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>    }<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>    return splits;<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span><a name="line.402"></a>
-<span class="sourceLineNo">403</span>  /**<a name="line.403"></a>
-<span class="sourceLineNo">404</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.404"></a>
-<span class="sourceLineNo">405</span>   * only when localityEnabled is true.<a name="line.405"></a>
-<span class="sourceLineNo">406</span>   */<a name="line.406"></a>
-<span class="sourceLineNo">407</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      throws IOException {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>    if (localityEnabled) { // care block locality<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      return getBestLocations(conf,<a name="line.411"></a>
-<span class="sourceLineNo">412</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    } else { // do not care block locality<a name="line.413"></a>
-<span class="sourceLineNo">414</span>      return null;<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
-<span class="sourceLineNo">416</span>  }<a name="line.416"></a>
-<span class="sourceLineNo">417</span><a name="line.417"></a>
-<span class="sourceLineNo">418</span>  /**<a name="line.418"></a>
-<span class="sourceLineNo">419</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.419"></a>
-<span class="sourceLineNo">420</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.420"></a>
-<span class="sourceLineNo">421</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.421"></a>
-<span class="sourceLineNo">422</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.422"></a>
-<span class="sourceLineNo">423</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.423"></a>
-<span class="sourceLineNo">424</span>   * local.<a name="line.424"></a>
-<span class="sourceLineNo">425</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.425"></a>
-<span class="sourceLineNo">426</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.426"></a>
-<span class="sourceLineNo">427</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.427"></a>
-<span class="sourceLineNo">428</span>   * host with the best locality.<a name="line.428"></a>
-<span class="sourceLineNo">429</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.429"></a>
-<span class="sourceLineNo">430</span>   */<a name="line.430"></a>
-<span class="sourceLineNo">431</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.433"></a>
-<span class="sourceLineNo">434</span><a name="line.434"></a>
-<span class="sourceLineNo">435</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.439"></a>
-<span class="sourceLineNo">440</span>      numTopsAtMost = 1;<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    locations.add(topHost.getHost());<a name="line.445"></a>
-<span class="sourceLineNo">446</span><a name="line.446"></a>
-<span class="sourceLineNo">447</span>    if (top == 1) { // only care about the top host<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      return locations;<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>    // When top &gt;= 2,<a name="line.451"></a>
-<span class="sourceLineNo">452</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    double cutoffMultiplier<a name="line.453"></a>
-<span class="sourceLineNo">454</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.454"></a>
-<span class="sourceLineNo">455</span><a name="line.455"></a>
-<span class="sourceLineNo">456</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.456"></a>
+<span class="sourceLineNo">384</span>            if (scan.getStartRow().length == 0) {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>              boundedScan.withStartRow(sp[i]);<a name="line.385"></a>
+<span class="sourceLineNo">386</span>            } else {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>              boundedScan.withStartRow(<a name="line.387"></a>
+<span class="sourceLineNo">388</span>                Bytes.compareTo(scan.getStartRow(), sp[i]) &gt; 0 ? scan.getStartRow() : sp[i]);<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            }<a name="line.389"></a>
+<span class="sourceLineNo">390</span><a name="line.390"></a>
+<span class="sourceLineNo">391</span>            if (scan.getStopRow().length == 0) {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>              boundedScan.withStopRow(sp[i + 1]);<a name="line.392"></a>
+<span class="sourceLineNo">393</span>            } else {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>              boundedScan.withStopRow(<a name="line.394"></a>
+<span class="sourceLineNo">395</span>                Bytes.compareTo(scan.getStopRow(), sp[i + 1]) &lt; 0 ? scan.getStopRow() : sp[i + 1]);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>            }<a name="line.396"></a>
+<span class="sourceLineNo">397</span><a name="line.397"></a>
+<span class="sourceLineNo">398</span>            splits.add(new InputSplit(htd, hri, hosts, boundedScan, restoreDir));<a name="line.398"></a>
+<span class="sourceLineNo">399</span>          }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        }<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      } else {<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        if (PrivateCellUtil.overlappingKeys(scan.getStartRow(), scan.getStopRow(),<a name="line.402"></a>
+<span class="sourceLineNo">403</span>            hri.getStartKey(), hri.getEndKey())) {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          List&lt;String&gt; hosts =<a name="line.404"></a>
+<span class="sourceLineNo">405</span>              calculateLocationsForInputSplit(conf, htd, hri, tableDir, localityEnabled);<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          splits.add(new InputSplit(htd, hri, hosts, scan, restoreDir));<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      }<a name="line.408"></a>
+<span class="sourceLineNo">409</span>    }<a name="line.409"></a>
+<span class="sourceLineNo">410</span><a name="line.410"></a>
+<span class="sourceLineNo">411</span>    return splits;<a name="line.411"></a>
+<span class="sourceLineNo">412</span>  }<a name="line.412"></a>
+<span class="sourceLineNo">413</span><a name="line.413"></a>
+<span class="sourceLineNo">414</span>  /**<a name="line.414"></a>
+<span class="sourceLineNo">415</span>   * Compute block locations for snapshot files (which will get the locations for referred hfiles)<a name="line.415"></a>
+<span class="sourceLineNo">416</span>   * only when localityEnabled is true.<a name="line.416"></a>
+<span class="sourceLineNo">417</span>   */<a name="line.417"></a>
+<span class="sourceLineNo">418</span>  private static List&lt;String&gt; calculateLocationsForInputSplit(Configuration conf,<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      TableDescriptor htd, HRegionInfo hri, Path tableDir, boolean localityEnabled)<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      throws IOException {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>    if (localityEnabled) { // care block locality<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      return getBestLocations(conf,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>                              HRegion.computeHDFSBlocksDistribution(conf, htd, hri, tableDir));<a name="line.423"></a>
+<span class="sourceLineNo">424</span>    } else { // do not care block locality<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      return null;<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><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  /**<a name="line.429"></a>
+<span class="sourceLineNo">430</span>   * This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take<a name="line.430"></a>
+<span class="sourceLineNo">431</span>   * weights into account, thus will treat every location passed from the input split as equal. We<a name="line.431"></a>
+<span class="sourceLineNo">432</span>   * do not want to blindly pass all the locations, since we are creating one split per region, and<a name="line.432"></a>
+<span class="sourceLineNo">433</span>   * the region's blocks are all distributed throughout the cluster unless favorite node assignment<a name="line.433"></a>
+<span class="sourceLineNo">434</span>   * is used. On the expected stable case, only one location will contain most of the blocks as<a name="line.434"></a>
+<span class="sourceLineNo">435</span>   * local.<a name="line.435"></a>
+<span class="sourceLineNo">436</span>   * On the other hand, in favored node assignment, 3 nodes will contain highly local blocks. Here<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * we are doing a simple heuristic, where we will pass all hosts which have at least 80%<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   * (hbase.tablesnapshotinputformat.locality.cutoff.multiplier) as much block locality as the top<a name="line.438"></a>
+<span class="sourceLineNo">439</span>   * host with the best locality.<a name="line.439"></a>
+<span class="sourceLineNo">440</span>   * Return at most numTopsAtMost locations if there are more than that.<a name="line.440"></a>
+<span class="sourceLineNo">441</span>   */<a name="line.441"></a>
+<span class="sourceLineNo">442</span>  private static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.442"></a>
+<span class="sourceLineNo">443</span>      HDFSBlocksDistribution blockDistribution, int numTopsAtMost) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>    HostAndWeight[] hostAndWeights = blockDistribution.getTopHostsWithWeights();<a name="line.444"></a>
+<span class="sourceLineNo">445</span><a name="line.445"></a>
+<span class="sourceLineNo">446</span>    if (hostAndWeights.length == 0) { // no matter what numTopsAtMost is<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      return null;<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>    if (numTopsAtMost &lt; 1) { // invalid if numTopsAtMost &lt; 1, correct it to be 1<a name="line.450"></a>
+<span class="sourceLineNo">451</span>      numTopsAtMost = 1;<a name="line.451"></a>
+<span class="sourceLineNo">452</span>    }<a name="line.452"></a>
+<span class="sourceLineNo">453</span>    int top = Math.min(numTopsAtMost, hostAndWeights.length);<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    List&lt;String&gt; locations = new ArrayList&lt;&gt;(top);<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    HostAndWeight topHost = hostAndWeights[0];<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    locations.add(topHost.getHost());<a name="line.456"></a>
 <span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>        locations.add(hostAndWeights[i].getHost());<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      } else {<a name="line.461"></a>
-<span class="sourceLineNo">462</span>        // As hostAndWeights is in descending order,<a name="line.462"></a>
-<span class="sourceLineNo">463</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        break;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      }<a name="line.465"></a>
-<span class="sourceLineNo">466</span>    }<a name="line.466"></a>
-<span class="sourceLineNo">467</span><a name="line.467"></a>
-<span class="sourceLineNo">468</span>    return locations;<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>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.471"></a>
-<span class="sourceLineNo">472</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.472"></a>
-<span class="sourceLineNo">473</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.474"></a>
-<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
-<span class="sourceLineNo">476</span><a name="line.476"></a>
-<span class="sourceLineNo">477</span>  private static String getSnapshotName(Configuration conf) {<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    if (snapshotName == null) {<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.480"></a>
-<span class="sourceLineNo">481</span>    }<a name="line.481"></a>
-<span class="sourceLineNo">482</span>    return snapshotName;<a name="line.482"></a>
-<span class="sourceLineNo">483</span>  }<a name="line.483"></a>
-<span class="sourceLineNo">484</span><a name="line.484"></a>
-<span class="sourceLineNo">485</span>  /**<a name="line.485"></a>
-<span class="sourceLineNo">486</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.486"></a>
-<span class="sourceLineNo">487</span>   * @param conf the job to configuration<a name="line.487"></a>
-<span class="sourceLineNo">488</span>   * @param snapshotName the name of the snapshot to read from<a name="line.488"></a>
-<span class="sourceLineNo">489</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.489"></a>
-<span class="sourceLineNo">490</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.490"></a>
-<span class="sourceLineNo">491</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.491"></a>
-<span class="sourceLineNo">492</span>   * @throws IOException if an error occurs<a name="line.492"></a>
-<span class="sourceLineNo">493</span>   */<a name="line.493"></a>
-<span class="sourceLineNo">494</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.494"></a>
-<span class="sourceLineNo">495</span>      throws IOException {<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    setInput(conf, snapshotName, restoreDir, null, 1);<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>  /**<a name="line.499"></a>
-<span class="sourceLineNo">500</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.500"></a>
-<span class="sourceLineNo">501</span>   * @param conf the job to configure<a name="line.501"></a>
-<span class="sourceLineNo">502</span>   * @param snapshotName the name of the snapshot to read from<a name="line.502"></a>
-<span class="sourceLineNo">503</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.503"></a>
-<span class="sourceLineNo">504</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.504"></a>
-<span class="sourceLineNo">505</span>   * After the job is finished, restoreDir can be deleted.<a name="line.505"></a>
-<span class="sourceLineNo">506</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.506"></a>
-<span class="sourceLineNo">507</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.507"></a>
-<span class="sourceLineNo">508</span>   * @throws IOException if an error occurs<a name="line.508"></a>
-<span class="sourceLineNo">509</span>   */<a name="line.509"></a>
-<span class="sourceLineNo">510</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.510"></a>
-<span class="sourceLineNo">511</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.511"></a>
-<span class="sourceLineNo">512</span>          throws IOException {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.513"></a>
-<span class="sourceLineNo">514</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.515"></a>
-<span class="sourceLineNo">516</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    }<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.519"></a>
-<span class="sourceLineNo">520</span>    }<a name="line.520"></a>
-<span class="sourceLineNo">521</span>    if (splitAlgo != null) {<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.522"></a>
-<span class="sourceLineNo">523</span>    }<a name="line.523"></a>
-<span class="sourceLineNo">524</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.524"></a>
-<span class="sourceLineNo">525</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.526"></a>
-<span class="sourceLineNo">527</span><a name="line.527"></a>
-<span class="sourceLineNo">528</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    // TODO: restore from record readers to parallelize.<a name="line.530"></a>
-<span class="sourceLineNo">531</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.531"></a>
-<span class="sourceLineNo">532</span><a name="line.532"></a>
-<span class="sourceLineNo">533</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<a name="line.533"></a>
-<span class="sourceLineNo">534</span>  }<a name="line.534"></a>
-<span class="sourceLineNo">535</span>}<a name="line.535"></a>
+<span class="sourceLineNo">458</span>    if (top == 1) { // only care about the top host<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      return locations;<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>    // When top &gt;= 2,<a name="line.462"></a>
+<span class="sourceLineNo">463</span>    // do the heuristic: filter all hosts which have at least cutoffMultiplier % of block locality<a name="line.463"></a>
+<span class="sourceLineNo">464</span>    double cutoffMultiplier<a name="line.464"></a>
+<span class="sourceLineNo">465</span>            = conf.getFloat(LOCALITY_CUTOFF_MULTIPLIER, DEFAULT_LOCALITY_CUTOFF_MULTIPLIER);<a name="line.465"></a>
+<span class="sourceLineNo">466</span><a name="line.466"></a>
+<span class="sourceLineNo">467</span>    double filterWeight = topHost.getWeight() * cutoffMultiplier;<a name="line.467"></a>
+<span class="sourceLineNo">468</span><a name="line.468"></a>
+<span class="sourceLineNo">469</span>    for (int i = 1; i &lt;= top - 1; i++) {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (hostAndWeights[i].getWeight() &gt;= filterWeight) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        locations.add(hostAndWeights[i].getHost());<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      } else {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // As hostAndWeights is in descending order,<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // we could break the loop as long as we meet a weight which is less than filterWeight.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        break;<a name="line.475"></a>
+<span class="sourceLineNo">476</span>      }<a name="line.476"></a>
+<span class="sourceLineNo">477</span>    }<a name="line.477"></a>
+<span class="sourceLineNo">478</span><a name="line.478"></a>
+<span class="sourceLineNo">479</span>    return locations;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>  public static List&lt;String&gt; getBestLocations(Configuration conf,<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      HDFSBlocksDistribution blockDistribution) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>    // 3 nodes will contain highly local blocks. So default to 3.<a name="line.484"></a>
+<span class="sourceLineNo">485</span>    return getBestLocations(conf, blockDistribution, 3);<a name="line.485"></a>
+<span class="sourceLineNo">486</span>  }<a name="line.486"></a>
+<span class="sourceLineNo">487</span><a name="line.487"></a>
+<span class="sourceLineNo">488</span>  private static String getSnapshotName(Configuration conf) {<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    String snapshotName = conf.get(SNAPSHOT_NAME_KEY);<a name="line.489"></a>
+<span class="sourceLineNo">490</span>    if (snapshotName == null) {<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      throw new IllegalArgumentException("Snapshot name must be provided");<a name="line.491"></a>
+<span class="sourceLineNo">492</span>    }<a name="line.492"></a>
+<span class="sourceLineNo">493</span>    return snapshotName;<a name="line.493"></a>
+<span class="sourceLineNo">494</span>  }<a name="line.494"></a>
+<span class="sourceLineNo">495</span><a name="line.495"></a>
+<span class="sourceLineNo">496</span>  /**<a name="line.496"></a>
+<span class="sourceLineNo">497</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.497"></a>
+<span class="sourceLineNo">498</span>   * @param conf the job to configuration<a name="line.498"></a>
+<span class="sourceLineNo">499</span>   * @param snapshotName the name of the snapshot to read from<a name="line.499"></a>
+<span class="sourceLineNo">500</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should have<a name="line.500"></a>
+<span class="sourceLineNo">501</span>   *          write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.501"></a>
+<span class="sourceLineNo">502</span>   *          After the job is finished, restoreDir can be deleted.<a name="line.502"></a>
+<span class="sourceLineNo">503</span>   * @throws IOException if an error occurs<a name="line.503"></a>
+<span class="sourceLineNo">504</span>   */<a name="line.504"></a>
+<span class="sourceLineNo">505</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir)<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      throws IOException {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    setInput(conf, snapshotName, restoreDir, null, 1);<a name="line.507"></a>
+<span class="sourceLineNo">508</span>  }<a name="line.508"></a>
+<span class="sourceLineNo">509</span><a name="line.509"></a>
+<span class="sourceLineNo">510</span>  /**<a name="line.510"></a>
+<span class="sourceLineNo">511</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.511"></a>
+<span class="sourceLineNo">512</span>   * @param conf the job to configure<a name="line.512"></a>
+<span class="sourceLineNo">513</span>   * @param snapshotName the name of the snapshot to read from<a name="line.513"></a>
+<span class="sourceLineNo">514</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.514"></a>
+<span class="sourceLineNo">515</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>   * After the job is finished, restoreDir can be deleted.<a name="line.516"></a>
+<span class="sourceLineNo">517</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.517"></a>
+<span class="sourceLineNo">518</span>   * @param splitAlgo SplitAlgorithm to be used when generating InputSplits<a name="line.518"></a>
+<span class="sourceLineNo">519</span>   * @throws IOException if an error occurs<a name="line.519"></a>
+<span class="sourceLineNo">520</span>   */<a name="line.520"></a>
+<span class="sourceLineNo">521</span>  public static void setInput(Configuration conf, String snapshotName, Path restoreDir,<a name="line.521"></a>
+<span class="sourceLineNo">522</span>                              RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion)<a name="line.522"></a>
+<span class="sourceLineNo">523</span>          throws IOException {<a name="line.523"></a>
+<span class="sourceLineNo">524</span>    conf.set(SNAPSHOT_NAME_KEY, snapshotName);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>    if (numSplitsPerRegion &lt; 1) {<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      throw new IllegalArgumentException("numSplits must be &gt;= 1, " +<a name="line.526"></a>
+<span class="sourceLineNo">527</span>              "illegal numSplits : " + numSplitsPerRegion);<a name="line.527"></a>
+<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
+<span class="sourceLineNo">529</span>    if (splitAlgo == null &amp;&amp; numSplitsPerRegion &gt; 1) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>      throw new IllegalArgumentException("Split algo can't be null when numSplits &gt; 1");<a name="line.530"></a>
+<span class="sourceLineNo">531</span>    }<a name="line.531"></a>
+<span class="sourceLineNo">532</span>    if (splitAlgo != null) {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>      conf.set(SPLIT_ALGO, splitAlgo.getClass().getName());<a name="line.533"></a>
+<span class="sourceLineNo">534</span>    }<a name="line.534"></a>
+<span class="sourceLineNo">535</span>    conf.setInt(NUM_SPLITS_PER_REGION, numSplitsPerRegion);<a name="line.535"></a>
+<span class="sourceLineNo">536</span>    Path rootDir = FSUtils.getRootDir(conf);<a name="line.536"></a>
+<span class="sourceLineNo">537</span>    FileSystem fs = rootDir.getFileSystem(conf);<a name="line.537"></a>
+<span class="sourceLineNo">538</span><a name="line.538"></a>
+<span class="sourceLineNo">539</span>    restoreDir = new Path(restoreDir, UUID.randomUUID().toString());<a name="line.539"></a>
+<span class="sourceLineNo">540</span><a name="line.540"></a>
+<span class="sourceLineNo">541</span>    // TODO: restore from record readers to parallelize.<a name="line.541"></a>
+<span class="sourceLineNo">542</span>    RestoreSnapshotHelper.copySnapshotForScanner(conf, fs, rootDir, restoreDir, snapshotName);<a name="line.542"></a>
+<span class="sourceLineNo">543</span><a name="line.543"></a>
+<span class="sourceLineNo">544</span>    conf.set(RESTORE_DIR_KEY, restoreDir.toString());<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>
 
 
 


[05/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
index 2cb897e..9091ed6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
@@ -84,330 +84,404 @@
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private static final byte[] bbb = Bytes.toBytes("bbb");<a name="line.77"></a>
 <span class="sourceLineNo">078</span>  private static final byte[] yyy = Bytes.toBytes("yyy");<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Rule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public TestName name = new TestName();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  protected byte[] getStartRow() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return bbb;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected byte[] getEndRow() {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return yyy;<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>  @After<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public void tearDown() throws Exception {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Test<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public void testGetBestLocations() throws IOException {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    Configuration conf = UTIL.getConfiguration();<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Assert.assertEquals(null,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    VALIDATION_ERROR<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static class TestTableSnapshotMapper<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        Context context) throws IOException, InterruptedException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      verifyRowFromMap(key, value);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      context.write(key, NullWritable.get());<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>  public static class TestTableSnapshotReducer<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>       Context context) throws IOException, InterruptedException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      rowTracker.addRow(key.get());<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>    protected void cleanup(Context context) throws IOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        InterruptedException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      rowTracker.validate();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Test<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    setupCluster();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    String snapshotName = "foo";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      Assert.assertEquals(<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Assert.assertEquals(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        "Snapshot job should not use BucketCache.",<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      UTIL.deleteTable(tableName);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      tearDownCluster();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>  @Override<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      NullWritable.class, job, false, tmpTableDir);<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 void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    setupCluster();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    try {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      createTableAndSnapshot(<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Configuration conf = util.getConfiguration();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Job job = new Job(conf);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.231"></a>
-<span class="sourceLineNo">232</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>                numSplitsPerRegion);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      } else {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>                NullWritable.class, job, false, tmpTableDir);<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>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.240"></a>
+<span class="sourceLineNo">079</span>  private static final byte[] bbc = Bytes.toBytes("bbc");<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final byte[] yya = Bytes.toBytes("yya");<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Rule<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public TestName name = new TestName();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected byte[] getStartRow() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return bbb;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  protected byte[] getEndRow() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return yyy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @After<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public void tearDown() throws Exception {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Test<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public void testGetBestLocations() throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    Configuration conf = UTIL.getConfiguration();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Assert.assertEquals(null,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    VALIDATION_ERROR<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>  public static class TestTableSnapshotMapper<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        Context context) throws IOException, InterruptedException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      verifyRowFromMap(key, value);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      context.write(key, NullWritable.get());<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><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public static class TestTableSnapshotReducer<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       Context context) throws IOException, InterruptedException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      rowTracker.addRow(key.get());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    protected void cleanup(Context context) throws IOException,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        InterruptedException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      rowTracker.validate();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Test<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    setupCluster();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    String snapshotName = "foo";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      Assert.assertEquals(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      Assert.assertEquals(<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        "Snapshot job should not use BucketCache.",<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    } finally {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      UTIL.deleteTable(tableName);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      tearDownCluster();<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>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      NullWritable.class, job, false, tmpTableDir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  public void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    setupCluster();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      createTableAndSnapshot(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Configuration conf = util.getConfiguration();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Job job = new Job(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>                numSplitsPerRegion);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                NullWritable.class, job, false, tmpTableDir);<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>    } finally {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      util.deleteTable(tableName);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      tearDownCluster();<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>  @Test<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setupCluster();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String snapshotName = "testSnapshotBug";<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        UTIL.deleteTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">242</span>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      util.deleteTable(tableName);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      tearDownCluster();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testWithMockedMapReduceWithSplitsPerRegion() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    setupCluster();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      UTIL.createTable(tableName, FAMILIES);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      Admin admin = UTIL.getAdmin();<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // put some stuff in the table<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      UTIL.loadTable(table, FAMILIES);<a name="line.264"></a>
+<span class="sourceLineNo">259</span>      Configuration conf = UTIL.getConfiguration();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      Job job = new Job(conf);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // test scan with startRow and stopRow<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      Scan scan = new Scan(bbc, yya);<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // split to 2 regions<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.268"></a>
+<span class="sourceLineNo">266</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.268"></a>
 <span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        null, snapshotName, rootDir, fs, true);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>      // load different values<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // cause flush to create new files in the region<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      admin.flush(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      table.close();<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // limit the scan<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        tmpTableDir);<a name="line.291"></a>
+<span class="sourceLineNo">270</span>      verifyWithMockedMapReduce(job, 10, 40, bbc, yya);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    } finally {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      UTIL.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      tearDownCluster();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testWithMockedMapReduceWithNoStartRowStopRow() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    setupCluster();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Configuration conf = UTIL.getConfiguration();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      Job job = new Job(conf);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // test scan without startRow and stopRow<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      Scan scan2 = new Scan();<a name="line.291"></a>
 <span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      UTIL.deleteTable(tableName);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      tearDownCluster();<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 void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      byte[] startRow, byte[] stopRow)<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      throws IOException, InterruptedException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.305"></a>
+<span class="sourceLineNo">293</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan2,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      verifyWithMockedMapReduce(job, 10, 50, HConstants.EMPTY_START_ROW,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        HConstants.EMPTY_START_ROW);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    } finally {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      UTIL.deleteTable(tableName);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      tearDownCluster();<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>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        new HBaseTestingUtility.SeenRowTracker(startRow, stopRow);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    boolean localityEnabled =<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // validate input split<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      InputSplit split = splits.get(i);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      if (localityEnabled) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      } else {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<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>      // validate record reader<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      rr.initialize(split, taskAttemptContext);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      // validate we can read all the data back<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      while (rr.nextKeyValue()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        byte[] row = rr.getCurrentKey().get();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // validate all rows are seen<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    rowTracker.validate();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">307</span>  @Test<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    setupCluster();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    String snapshotName = "testSnapshotBug";<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        UTIL.deleteTable(tableName);<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>      UTIL.createTable(tableName, FAMILIES);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Admin admin = UTIL.getAdmin();<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      // put some stuff in the table<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      UTIL.loadTable(table, FAMILIES);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      // split to 2 regions<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        null, snapshotName, rootDir, fs, true);<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      // load different values<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      // cause flush to create new files in the region<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      admin.flush(tableName);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      table.close();<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // limit the scan<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<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>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<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>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    LOG.info("testing with MapReduce");<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("create the table and snapshot");<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.363"></a>
+<span class="sourceLineNo">347</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        tmpTableDir);<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    } finally {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      UTIL.deleteTable(tableName);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      tearDownCluster();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      byte[] startRow, byte[] stopRow)<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      throws IOException, InterruptedException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (shutdownCluster) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      LOG.info("shutting down hbase cluster.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      util.shutdownMiniHBaseCluster();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">365</span>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    HBaseTestingUtility.SeenRowTracker rowTracker = new HBaseTestingUtility.SeenRowTracker(startRow,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        stopRow.length &gt; 0 ? stopRow : Bytes.toBytes("\uffff"));<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      // create the job<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Job job = new Job(util.getConfiguration());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>      job.setJarByClass(util.getClass());<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              TestTableSnapshotInputFormat.class);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.382"></a>
-<span class="sourceLineNo">383</span>                numSplitsPerRegion);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.386"></a>
-<span class="sourceLineNo">387</span>                NullWritable.class, job, true, tableDir);<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>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      job.setNumReduceTasks(1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (!shutdownCluster) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        util.deleteTable(tableName);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>}<a name="line.402"></a>
+<span class="sourceLineNo">370</span>    boolean localityEnabled =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // validate input split<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      InputSplit split = splits.get(i);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      TableSnapshotRegionSplit snapshotRegionSplit = (TableSnapshotRegionSplit) split;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (localityEnabled) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      } else {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      Scan scan =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          TableMapReduceUtil.convertStringToScan(snapshotRegionSplit.getDelegate().getScan());<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (startRow.length &gt; 0) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        Assert.assertTrue(<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          Bytes.toStringBinary(startRow) + " should &lt;= " + Bytes.toStringBinary(scan.getStartRow()),<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          Bytes.compareTo(startRow, scan.getStartRow()) &lt;= 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (stopRow.length &gt; 0) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        Assert.assertTrue(<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          Bytes.toStringBinary(stopRow) + " should &gt;= " + Bytes.toStringBinary(scan.getStopRow()),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          Bytes.compareTo(stopRow, scan.getStopRow()) &gt;= 0);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Assert.assertTrue("startRow should &lt; stopRow",<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        Bytes.compareTo(scan.getStartRow(), scan.getStopRow()) &lt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // validate record reader<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      rr.initialize(split, taskAttemptContext);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // validate we can read all the data back<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      while (rr.nextKeyValue()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        byte[] row = rr.getCurrentKey().get();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // validate all rows are seen<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    rowTracker.validate();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    LOG.info("testing with MapReduce");<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    LOG.info("create the table and snapshot");<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (shutdownCluster) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      LOG.info("shutting down hbase cluster.");<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      util.shutdownMiniHBaseCluster();<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>    try {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      // create the job<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      Job job = new Job(util.getConfiguration());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      job.setJarByClass(util.getClass());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              TestTableSnapshotInputFormat.class);<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.456"></a>
+<span class="sourceLineNo">457</span>                numSplitsPerRegion);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                NullWritable.class, job, true, tableDir);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      job.setNumReduceTasks(1);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } finally {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (!shutdownCluster) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        util.deleteTable(tableName);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 


[23/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 546d2b6..3b8b827 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
@@ -180,3553 +180,3580 @@
 <span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
 <span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * run the cluster.  All others park themselves in their constructor until<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> *<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
-<span class="sourceLineNo">237</span> */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
-<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * true, do nothing otherwise.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    private final HMaster master;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private final long timeout;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final boolean haltOnTimeout;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    InitializationMonitor(HMaster master) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      super("MasterInitializationMonitor");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.master = master;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.setDaemon(true);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public void run() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          Thread.sleep(timeout);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          if (master.isInitialized()) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            if (haltOnTimeout) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              System.exit(-1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException ie) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  //instance into web context.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public static final String MASTER = "master";<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Manager and zk listener for master election<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Region server tracker<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private RegionServerTracker regionServerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Draining region server tracker<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // Tracker for load balancer state<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Tracker for split and merge state<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for region normalizer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  //Tracker for master maintenance mode setting<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // Metrics for the HMaster<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  final MetricsMaster metricsMaster;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  // file system manager for the master FS operations<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private MasterFileSystem fileSystemManager;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private MasterWalManager walManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // server manager to deal with region server info<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private volatile ServerManager serverManager;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // manager of assignment nodes in zookeeper<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AssignmentManager assignmentManager;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // manager of replication<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // buffer for "fatal error" notices from region servers<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // in the cluster. This is only used for assisting<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // operations/debugging.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  // flag set after we become the active master (used for testing)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private volatile boolean activeMaster = false;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // flag set after we complete initialization once active<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // flag set after master services are started,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // initialization may have not completed yet.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  volatile boolean serviceStarted = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // Maximum time we should run balancer for<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final int maxBlancingTime;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // Maximum percent of regions in transition when balancing<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private final double maxRitPercent;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private final LockManager lockManager = new LockManager(this);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private LoadBalancer balancer;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private RegionNormalizer normalizer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private BalancerChore balancerChore;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private RegionNormalizerChore normalizerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ClusterStatusChore clusterStatusChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  CatalogJanitor catalogJanitorChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private LogCleaner logCleaner;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private HFileCleaner hfileCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private MobCompactionChore mobCompactChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  // used to synchronize the mobCompactionStates<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  // save the information of mob compactions in tables.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  MasterCoprocessorHost cpHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private final boolean preLoadTableDescriptors;<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  // Time stamps for when a hmaster became active<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private long masterActiveTime;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private long masterFinishedInitializationTime;<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  private final boolean masterCheckCompression;<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  //should we check encryption settings at master side, default true<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean masterCheckEncryption;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  // monitor for snapshot of hbase tables<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  SnapshotManager snapshotManager;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // monitor for distributed procedures<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private MasterProcedureManagerHost mpmHost;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private volatile MasterQuotaManager quotaManager;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private QuotaObserverChore quotaObserverChore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private WALProcedureStore procedureStore;<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // handle table states<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private TableStateManager tableStateManager;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private long splitPlanCount;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private long mergePlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /* Handle favored nodes information */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private FavoredNodesManager favoredNodesManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private Server masterJettyServer;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static class RedirectServlet extends HttpServlet {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    private final int regionServerInfoPort;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.434"></a>
-<span class="sourceLineNo">435</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>     */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       regionServerInfoPort = infoServer.getPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       regionServerHostname = hostname;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public void doGet(HttpServletRequest request,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectHost = regionServerHostname;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if(redirectHost == null) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        redirectHost = request.getServerName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "to an appropriate hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String redirectUrl = request.getScheme() + "://"<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        + request.getRequestURI();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      response.sendRedirect(redirectUrl);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<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>   * Initializes the HMaster. The steps are as follows:<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;ol&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * &lt;/ol&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Remaining steps of initialization occur in<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * the master becomes the active one.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public HMaster(final Configuration conf)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      throws IOException, KeeperException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    super(conf);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    TraceUtil.initTracer(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Disable usage of meta replicas in the master<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      decorateMasterConfiguration(this.conf);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // should we check encryption settings at master side, default true<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // preload table descriptor at startup<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>      // Do we publish the status?<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              ClusterStatusPublisher.Publisher.class);<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (shouldPublish) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        if (publisherClass == null) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.530"></a>
-<span class="sourceLineNo">531</span>              " is not set - not publishing status");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        } else {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } else {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        this.activeMasterManager = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    } catch (Throwable t) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      // cause of failed startup is lost.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      LOG.error("Failed construction of Master", t);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      throw t;<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><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  // block in here until then.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void run() {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        Threads.setDaemonThreadRunning(new Thread(() -&gt; {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>            int infoPort = putUpJettyServer();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            startActiveMasterManager(infoPort);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          } catch (Throwable t) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            // Make sure we log the exception.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>            String error = "Failed to become Active Master";<a name="line.569"></a>
-<span class="sourceLineNo">570</span>            LOG.error(error, t);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>            // Abort should have been called already.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            if (!isAborted()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>              abort(error, t);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>            }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        }));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // the super run call will do this for us.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      super.run();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      if (this.clusterSchemaService != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // If on way out, then we are no longer active master.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        this.clusterSchemaService.stopAsync();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        try {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          this.clusterSchemaService.awaitTerminated(<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        } catch (TimeoutException te) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<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>  // return the actual infoPort, -1 means disable info server.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  private int putUpJettyServer() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<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>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    // -1 is for disabling info server, so no redirecting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if(infoPort == infoServer.getPort()) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return infoPort;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String msg =<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.614"></a>
-<span class="sourceLineNo">615</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              + "hbase.master.info.bindAddress";<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      LOG.error(msg);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      throw new IOException(msg);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // a second entire stack here.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    masterJettyServer = new Server();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    connector.setHost(addr);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    connector.setPort(infoPort);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    masterJettyServer.addConnector(connector);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    final String redirectHostname =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        StringUtils.isBlank(useThisHostnameInstead) ? null : useThisHostnameInstead;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>    final RedirectServlet redirect = new RedirectServlet(infoServer, redirectHostname);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    final WebAppContext context = new WebAppContext(null, "/", null, null, null, null, WebAppContext.NO_SESSIONS);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    context.addServlet(new ServletHolder(redirect), "/*");<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    context.setServer(masterJettyServer);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      masterJettyServer.start();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    } catch (Exception e) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throw new IOException("Failed to start redirecting jetty server", e);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    return connector.getLocalPort();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  }<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  @Override<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return builder -&gt; builder.setRegionReplication(conf.getInt(HConstants.META_REPLICAS_NUM, HConstants.DEFAULT_META_REPLICA_NUM));<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>   * For compatibility, if failed with regionserver credentials, try the master one<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  @Override<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    try {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      super.login(user, host);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } catch (IOException ie) {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      user.login("hbase.master.keytab.file",<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        "hbase.master.kerberos.principal", host);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>  /**<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * If configured to put regions on active master,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * wait till a backup master becomes active.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   * Otherwise, loop till the server is stopped or aborted.<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  @Override<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  protected void waitForMasterActive(){<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(conf);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    while (!(tablesOnMaster &amp;&amp; activeMaster) &amp;&amp; !isStopped() &amp;&amp; !isAborted()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      sleeper.sleep();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    }<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>  @VisibleForTesting<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public MasterRpcServices getMasterRpcServices() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    return (MasterRpcServices)rpcServices;<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>  public boolean balanceSwitch(final boolean b) throws IOException {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return getMasterRpcServices().switchBalancer(b, BalanceSwitchMode.ASYNC);<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>  @Override<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  protected String getProcessName() {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return MASTER;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
-<span class="sourceLineNo">692</span>  protected boolean canCreateBaseZNode() {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return true;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Override<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  protected boolean canUpdateTableDescriptor() {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    return true;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>  @Override<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return new MasterRpcServices(this);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  protected void configureInfoServer() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    infoServer.addServlet("master-status", "/master-status", MasterStatusServlet.class);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    infoServer.setAttribute(MASTER, this);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (LoadBalancer.isTablesOnMaster(conf)) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      super.configureInfoServer();<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><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return MasterDumpServlet.class;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public MetricsMaster getMasterMetrics() {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    return metricsMaster;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  /**<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * Initialize all ZK based system trackers. But do not include {@link RegionServerTracker}, it<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * should have already been initialized along with {@link ServerManager}.<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * &lt;/p&gt;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * &lt;p&gt;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * Will be overridden in tests.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * &lt;/p&gt;<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @VisibleForTesting<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  protected void initializeZKBasedSystemTrackers()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      throws IOException, InterruptedException, KeeperException, ReplicationException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    this.normalizer = RegionNormalizerFactory.getRegionNormalizer(conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    this.normalizer.setMasterServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    this.normalizer.setMasterRpcServices((MasterRpcServices)rpcServices);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    this.loadBalancerTracker = new LoadBalancerTracker(zooKeeper, this);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    this.loadBalancerTracker.start();<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>    this.regionNormalizerTracker = new RegionNormalizerTracker(zooKeeper, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    this.regionNormalizerTracker.start();<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    this.splitOrMergeTracker = new SplitOrMergeTracker(zooKeeper, conf, this);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    this.splitOrMergeTracker.start();<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>    this.replicationPeerManager = ReplicationPeerManager.create(zooKeeper, conf);<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this, this.serverManager);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    this.drainingServerTracker.start();<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    this.maintenanceModeTracker = new MasterMaintenanceModeTracker(zooKeeper);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    this.maintenanceModeTracker.start();<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String clientQuorumServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    boolean clientZkObserverMode = conf.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    if (clientQuorumServers != null &amp;&amp; !clientZkObserverMode) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      // we need to take care of the ZK information synchronization<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      // if given client ZK are not observer nodes<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      ZKWatcher clientZkWatcher = new ZKWatcher(conf,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>          getProcessName() + ":" + rpcServices.getSocketAddress().getPort() + "-clientZK", this,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          false, true);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.metaLocationSyncer = new MetaLocationSyncer(zooKeeper, clientZkWatcher, this);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      this.metaLocationSyncer.start();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      this.masterAddressSyncer = new MasterAddressSyncer(zooKeeper, clientZkWatcher, this);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      this.masterAddressSyncer.start();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      // set cluster id is a one-go effort<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      ZKClusterId.setClusterId(clientZkWatcher, fileSystemManager.getClusterId());<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // Set the cluster as up.  If new RSs, they'll be waiting on this before<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    // going ahead with their startup.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    boolean wasUp = this.clusterStatusTracker.isClusterUp();<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    if (!wasUp) this.clusterStatusTracker.setClusterUp();<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    LOG.info("Active/primary master=" + this.serverName +<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        ", sessionid=0x" +<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +<a name="line.782"></a>
-<span class="sourceLineNo">783</span>        ", setting cluster-up flag (Was=" + wasUp + ")");<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>    // create/initialize the snapshot manager and other procedure managers<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    this.snapshotManager = new SnapshotManager();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    this.mpmHost = new MasterProcedureManagerHost();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    this.mpmHost.register(this.snapshotManager);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    this.mpmHost.register(new MasterFlushTableProcedureManager());<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    this.mpmHost.loadProcedures(conf);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    this.mpmHost.initialize(this, this.metricsMaster);<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * Finish initialization of HMaster after becoming the primary master.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * &lt;p/&gt;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * The startup order is a bit complicated but very important, do not change it unless you know<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * what you are doing.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;ol&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;Initialize file system based components - file system manager, wal manager, table<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * descriptors, etc&lt;/li&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * &lt;li&gt;Publish cluster id&lt;/li&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * &lt;li&gt;Here comes the most complicated part - initialize server manager, assignment manager and<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * region server tracker<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * &lt;ol type='i'&gt;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * &lt;li&gt;Create server manager&lt;/li&gt;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * &lt;li&gt;Create procedure executor, load the procedures, but do not start workers. We will start it<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * later after we finish scheduling SCPs to avoid scheduling duplicated SCPs for the same<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * server&lt;/li&gt;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * &lt;li&gt;Create assignment manager and start it, load the meta region state, but do not load data<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * from meta region&lt;/li&gt;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * &lt;li&gt;Start region server tracker, construct the online servers set and find out dead servers and<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * schedule SCP for them. The online servers will be constructed by scanning zk, and we will also<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * scan the wal directory to find out possible live region servers, and the differences between<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * these two sets are the dead servers&lt;/li&gt;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * &lt;/ol&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * &lt;/li&gt;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * &lt;li&gt;If this is a new deploy, schedule a InitMetaProcedure to initialize meta&lt;/li&gt;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * &lt;li&gt;Start necessary service threads - balancer, catalog janior, executor services, and also the<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * procedure executor, etc. Notice that the balancer must be created first as assignment manager<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * may use it when assigning regions.&lt;/li&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * &lt;li&gt;Wait for meta to be initialized if necesssary, start table state manager.&lt;/li&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * &lt;li&gt;Wait for enough region servers to check-in&lt;/li&gt;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * &lt;li&gt;Let assignment manager load data from meta and construct region states&lt;/li&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * &lt;li&gt;Start all other things such as chore services, etc&lt;/li&gt;<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * &lt;/ol&gt;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * &lt;p/&gt;<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * Notice that now we will not schedule a special procedure to make meta online(unless the first<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * time where meta has not been created yet), we will rely on SCP to bring meta online.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  private void finishActiveMasterInitialization(MonitoredTask status) throws IOException,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          InterruptedException, KeeperException, ReplicationException {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Thread zombieDetector = new Thread(new InitializationMonitor(this),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        "ActiveMasterInitializationMonitor-" + System.currentTimeMillis());<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    zombieDetector.setDaemon(true);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    zombieDetector.start();<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>     * We are active master now... go initialize components we need to run.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    status.setStatus("Initializing Master file system");<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.masterActiveTime = System.currentTimeMillis();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    // Initialize the chunkCreator<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    initializeMemStoreChunkCreator();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    this.walManager = new MasterWalManager(this);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>    // enable table descriptors cache<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    this.tableDescriptors.setCacheOn();<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // warm-up HTDs cache on master initialization<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (preLoadTableDescriptors) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      status.setStatus("Pre-loading table descriptors");<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.tableDescriptors.getAll();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Publish cluster ID; set it in Master too. The superclass RegionServer does this later but<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // only after it has checked in with the Master. At least a few tests ask Master for clusterId<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    // before it has called its run method and before RegionServer has done the reportForDuty.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    ClusterId clusterId = fileSystemManager.getClusterId();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    status.setStatus("Publishing Cluster ID " + clusterId + " in ZooKeeper");<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    this.clusterId = clusterId.toString();<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.zookeeper.KeeperException;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.Server;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.Logger;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.slf4j.LoggerFactory;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * run the cluster.  All others park themselves in their constructor until<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> *<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> *<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.235"></a>
+<span class="sourceLineNo">236</span> *<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @see org.apache.zookeeper.Watcher<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>@SuppressWarnings("deprecation")<a name="line.240"></a>
+<span class="sourceLineNo">241</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private static class InitializationMonitor extends HasThread {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.254"></a>
+<span class="sourceLineNo">255</span>     * true, do nothing otherwise.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public static final boolean HALT_DEFAULT = false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private final HMaster master;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private final long timeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private final boolean haltOnTimeout;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    InitializationMonitor(HMaster master) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      super("MasterInitializationMonitor");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.master = master;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.setDaemon(true);<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>    public void run() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Thread.sleep(timeout);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (master.isInitialized()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.281"></a>
+<span class="sourceLineNo">282</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            if (haltOnTimeout) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  //instance into web context.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String MASTER = "master";<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  // Manager and zk listener for master election<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private final ActiveMasterManager activeMasterManager;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  // Region server tracker<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private RegionServerTracker regionServerTracker;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Draining region server tracker<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private DrainingServerTracker drainingServerTracker;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // Tracker for load balancer state<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // Tracker for split and merge state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Tracker for region normalizer state<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  //Tracker for master maintenance mode setting<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private ClusterSchemaService clusterSchemaService;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    "hbase.master.wait.on.service.seconds";<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  public static final i

<TRUNCATED>

[11/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
index 04bd545..34fa245 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
@@ -16,152 +16,158 @@
 <span class="sourceLineNo">008</span>// 28, 9<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 29, 9<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 30, 9<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 31, 9<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.ServerName;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 32, 9<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.Size;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 33, 9<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.ServerName;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 34, 9<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>@org.jamon.annotations.Template(<a name="line.23"></a>
-<span class="sourceLineNo">024</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.24"></a>
-<span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
-<span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.26"></a>
-<span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.28"></a>
-<span class="sourceLineNo">029</span>public class RegionServerListTmpl<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  extends org.jamon.AbstractTemplateProxy<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>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.33"></a>
-<span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>     super(p_manager);<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  }<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  <a name="line.37"></a>
-<span class="sourceLineNo">038</span>  protected RegionServerListTmpl(String p_path)<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    super(p_path);<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  <a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public RegionServerListTmpl()<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<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>  public interface Intf<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.49"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.Size;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>// 35, 9<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>// 36, 9<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>// 37, 9<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>@org.jamon.annotations.Template(<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  requiredArguments = {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  optionalArguments = {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public class RegionServerListTmpl<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  extends org.jamon.AbstractTemplateProxy<a name="line.36"></a>
+<span class="sourceLineNo">037</span>{<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  <a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>     super(p_manager);<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  <a name="line.43"></a>
+<span class="sourceLineNo">044</span>  protected RegionServerListTmpl(String p_path)<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    super(p_path);<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  <a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public RegionServerListTmpl()<a name="line.49"></a>
 <span class="sourceLineNo">050</span>  {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    <a name="line.51"></a>
-<span class="sourceLineNo">052</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    <a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static class ImplData<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    // 23, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public void setMaster(HMaster master)<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      // 23, 1<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      m_master = master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public HMaster getMaster()<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return m_master;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private HMaster m_master;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // 22, 1<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.70"></a>
+<span class="sourceLineNo">051</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  <a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public interface Intf<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    extends org.jamon.AbstractTemplateProxy.Intf<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>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    <a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static class ImplData<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    // 23, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    public void setMaster(HMaster master)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      // 23, 1<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      m_master = master;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    public HMaster getMaster()<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      m_servers = servers;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      m_servers__IsNotDefault = true;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public List&lt;ServerName&gt; getServers()<a name="line.76"></a>
+<span class="sourceLineNo">072</span>      return m_master;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private HMaster m_master;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    // 22, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.76"></a>
 <span class="sourceLineNo">077</span>    {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return m_servers;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    private List&lt;ServerName&gt; m_servers;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    public boolean getServers__IsNotDefault()<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return m_servers__IsNotDefault;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    private boolean m_servers__IsNotDefault;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return new ImplData();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @Override public ImplData getImplData()<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    return (ImplData) super.getImplData();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  <a name="line.96"></a>
-<span class="sourceLineNo">097</span>  protected List&lt;ServerName&gt; servers;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.98"></a>
+<span class="sourceLineNo">078</span>      // 22, 1<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      m_servers = servers;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      m_servers__IsNotDefault = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public List&lt;ServerName&gt; getServers()<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return m_servers;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    private List&lt;ServerName&gt; m_servers;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public boolean getServers__IsNotDefault()<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return m_servers__IsNotDefault;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    private boolean m_servers__IsNotDefault;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return new ImplData();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override public ImplData getImplData()<a name="line.98"></a>
 <span class="sourceLineNo">099</span>  {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    (getImplData()).setServers(p_servers);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return this;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  <a name="line.103"></a>
-<span class="sourceLineNo">104</span>  <a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @Override<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    try<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      return p_class<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    catch (RuntimeException e)<a name="line.113"></a>
+<span class="sourceLineNo">100</span>    return (ImplData) super.getImplData();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  <a name="line.102"></a>
+<span class="sourceLineNo">103</span>  protected List&lt;ServerName&gt; servers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    (getImplData()).setServers(p_servers);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return this;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  <a name="line.109"></a>
+<span class="sourceLineNo">110</span>  <a name="line.110"></a>
+<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    try<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      throw e;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    catch (Exception e)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      throw new RuntimeException(e);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  <a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    return new org.jamon.AbstractRenderer() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        throws java.io.IOException<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        render(jamonWriter, master);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    };<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  <a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    throws java.io.IOException<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    renderNoFlush(jamonWriter, master);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    jamonWriter.flush();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
+<span class="sourceLineNo">115</span>      return p_class<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    catch (RuntimeException e)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      throw e;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    catch (Exception e)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      throw new RuntimeException(e);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  <a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Override<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    return new org.jamon.AbstractRenderer() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      @Override<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        throws java.io.IOException<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        render(jamonWriter, master);<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>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
 <span class="sourceLineNo">146</span>    throws java.io.IOException<a name="line.146"></a>
 <span class="sourceLineNo">147</span>  {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    ImplData implData = getImplData();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    implData.setMaster(master);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    instance.renderNoFlush(jamonWriter);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    reset();<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>}<a name="line.156"></a>
+<span class="sourceLineNo">148</span>    renderNoFlush(jamonWriter, master);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    jamonWriter.flush();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    throws java.io.IOException<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    ImplData implData = getImplData();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    implData.setMaster(master);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    instance.renderNoFlush(jamonWriter);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    reset();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
index 04bd545..34fa245 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
@@ -16,152 +16,158 @@
 <span class="sourceLineNo">008</span>// 28, 9<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 29, 9<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 30, 9<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 31, 9<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.ServerName;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 32, 9<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.Size;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 33, 9<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.ServerName;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 34, 9<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>@org.jamon.annotations.Template(<a name="line.23"></a>
-<span class="sourceLineNo">024</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.24"></a>
-<span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
-<span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.26"></a>
-<span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.28"></a>
-<span class="sourceLineNo">029</span>public class RegionServerListTmpl<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  extends org.jamon.AbstractTemplateProxy<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>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.33"></a>
-<span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>     super(p_manager);<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  }<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  <a name="line.37"></a>
-<span class="sourceLineNo">038</span>  protected RegionServerListTmpl(String p_path)<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    super(p_path);<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  <a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public RegionServerListTmpl()<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<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>  public interface Intf<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.49"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.Size;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>// 35, 9<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>// 36, 9<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>// 37, 9<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>@org.jamon.annotations.Template(<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  requiredArguments = {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  optionalArguments = {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public class RegionServerListTmpl<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  extends org.jamon.AbstractTemplateProxy<a name="line.36"></a>
+<span class="sourceLineNo">037</span>{<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  <a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>     super(p_manager);<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  <a name="line.43"></a>
+<span class="sourceLineNo">044</span>  protected RegionServerListTmpl(String p_path)<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    super(p_path);<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  <a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public RegionServerListTmpl()<a name="line.49"></a>
 <span class="sourceLineNo">050</span>  {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    <a name="line.51"></a>
-<span class="sourceLineNo">052</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    <a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static class ImplData<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    // 23, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public void setMaster(HMaster master)<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      // 23, 1<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      m_master = master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public HMaster getMaster()<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return m_master;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private HMaster m_master;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // 22, 1<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.70"></a>
+<span class="sourceLineNo">051</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  <a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public interface Intf<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    extends org.jamon.AbstractTemplateProxy.Intf<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>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    <a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static class ImplData<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    // 23, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    public void setMaster(HMaster master)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      // 23, 1<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      m_master = master;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    public HMaster getMaster()<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      m_servers = servers;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      m_servers__IsNotDefault = true;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public List&lt;ServerName&gt; getServers()<a name="line.76"></a>
+<span class="sourceLineNo">072</span>      return m_master;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private HMaster m_master;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    // 22, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.76"></a>
 <span class="sourceLineNo">077</span>    {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return m_servers;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    private List&lt;ServerName&gt; m_servers;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    public boolean getServers__IsNotDefault()<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return m_servers__IsNotDefault;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    private boolean m_servers__IsNotDefault;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return new ImplData();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @Override public ImplData getImplData()<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    return (ImplData) super.getImplData();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  <a name="line.96"></a>
-<span class="sourceLineNo">097</span>  protected List&lt;ServerName&gt; servers;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.98"></a>
+<span class="sourceLineNo">078</span>      // 22, 1<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      m_servers = servers;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      m_servers__IsNotDefault = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public List&lt;ServerName&gt; getServers()<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return m_servers;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    private List&lt;ServerName&gt; m_servers;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public boolean getServers__IsNotDefault()<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return m_servers__IsNotDefault;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    private boolean m_servers__IsNotDefault;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return new ImplData();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override public ImplData getImplData()<a name="line.98"></a>
 <span class="sourceLineNo">099</span>  {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    (getImplData()).setServers(p_servers);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return this;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  <a name="line.103"></a>
-<span class="sourceLineNo">104</span>  <a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @Override<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    try<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      return p_class<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    catch (RuntimeException e)<a name="line.113"></a>
+<span class="sourceLineNo">100</span>    return (ImplData) super.getImplData();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  <a name="line.102"></a>
+<span class="sourceLineNo">103</span>  protected List&lt;ServerName&gt; servers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    (getImplData()).setServers(p_servers);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return this;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  <a name="line.109"></a>
+<span class="sourceLineNo">110</span>  <a name="line.110"></a>
+<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    try<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      throw e;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    catch (Exception e)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      throw new RuntimeException(e);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  <a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    return new org.jamon.AbstractRenderer() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        throws java.io.IOException<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        render(jamonWriter, master);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    };<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  <a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    throws java.io.IOException<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    renderNoFlush(jamonWriter, master);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    jamonWriter.flush();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
+<span class="sourceLineNo">115</span>      return p_class<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    catch (RuntimeException e)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      throw e;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    catch (Exception e)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      throw new RuntimeException(e);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  <a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Override<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    return new org.jamon.AbstractRenderer() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      @Override<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        throws java.io.IOException<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        render(jamonWriter, master);<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>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
 <span class="sourceLineNo">146</span>    throws java.io.IOException<a name="line.146"></a>
 <span class="sourceLineNo">147</span>  {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    ImplData implData = getImplData();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    implData.setMaster(master);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    instance.renderNoFlush(jamonWriter);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    reset();<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>}<a name="line.156"></a>
+<span class="sourceLineNo">148</span>    renderNoFlush(jamonWriter, master);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    jamonWriter.flush();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    throws java.io.IOException<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    ImplData implData = getImplData();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    implData.setMaster(master);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    instance.renderNoFlush(jamonWriter);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    reset();<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
index 04bd545..34fa245 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
@@ -16,152 +16,158 @@
 <span class="sourceLineNo">008</span>// 28, 9<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 29, 9<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 30, 9<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 31, 9<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.ServerName;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 32, 9<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.Size;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 33, 9<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.ServerName;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 34, 9<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>@org.jamon.annotations.Template(<a name="line.23"></a>
-<span class="sourceLineNo">024</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.24"></a>
-<span class="sourceLineNo">025</span>  requiredArguments = {<a name="line.25"></a>
-<span class="sourceLineNo">026</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.26"></a>
-<span class="sourceLineNo">027</span>  optionalArguments = {<a name="line.27"></a>
-<span class="sourceLineNo">028</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.28"></a>
-<span class="sourceLineNo">029</span>public class RegionServerListTmpl<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  extends org.jamon.AbstractTemplateProxy<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>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.33"></a>
-<span class="sourceLineNo">034</span>  {<a name="line.34"></a>
-<span class="sourceLineNo">035</span>     super(p_manager);<a name="line.35"></a>
-<span class="sourceLineNo">036</span>  }<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  <a name="line.37"></a>
-<span class="sourceLineNo">038</span>  protected RegionServerListTmpl(String p_path)<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    super(p_path);<a name="line.40"></a>
-<span class="sourceLineNo">041</span>  }<a name="line.41"></a>
-<span class="sourceLineNo">042</span>  <a name="line.42"></a>
-<span class="sourceLineNo">043</span>  public RegionServerListTmpl()<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  {<a name="line.44"></a>
-<span class="sourceLineNo">045</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<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>  public interface Intf<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.49"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.Size;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>// 35, 9<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>// 36, 9<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>// 37, 9<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>@org.jamon.annotations.Template(<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  signature = "3014D59EE1D8FE3441AA4C8A712CFE31",<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  requiredArguments = {<a name="line.31"></a>
+<span class="sourceLineNo">032</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.32"></a>
+<span class="sourceLineNo">033</span>  optionalArguments = {<a name="line.33"></a>
+<span class="sourceLineNo">034</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.34"></a>
+<span class="sourceLineNo">035</span>public class RegionServerListTmpl<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  extends org.jamon.AbstractTemplateProxy<a name="line.36"></a>
+<span class="sourceLineNo">037</span>{<a name="line.37"></a>
+<span class="sourceLineNo">038</span>  <a name="line.38"></a>
+<span class="sourceLineNo">039</span>  public RegionServerListTmpl(org.jamon.TemplateManager p_manager)<a name="line.39"></a>
+<span class="sourceLineNo">040</span>  {<a name="line.40"></a>
+<span class="sourceLineNo">041</span>     super(p_manager);<a name="line.41"></a>
+<span class="sourceLineNo">042</span>  }<a name="line.42"></a>
+<span class="sourceLineNo">043</span>  <a name="line.43"></a>
+<span class="sourceLineNo">044</span>  protected RegionServerListTmpl(String p_path)<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    super(p_path);<a name="line.46"></a>
+<span class="sourceLineNo">047</span>  }<a name="line.47"></a>
+<span class="sourceLineNo">048</span>  <a name="line.48"></a>
+<span class="sourceLineNo">049</span>  public RegionServerListTmpl()<a name="line.49"></a>
 <span class="sourceLineNo">050</span>  {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>    <a name="line.51"></a>
-<span class="sourceLineNo">052</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.52"></a>
-<span class="sourceLineNo">053</span>    <a name="line.53"></a>
-<span class="sourceLineNo">054</span>  }<a name="line.54"></a>
-<span class="sourceLineNo">055</span>  public static class ImplData<a name="line.55"></a>
-<span class="sourceLineNo">056</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.56"></a>
-<span class="sourceLineNo">057</span>  {<a name="line.57"></a>
-<span class="sourceLineNo">058</span>    // 23, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>    public void setMaster(HMaster master)<a name="line.59"></a>
-<span class="sourceLineNo">060</span>    {<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      // 23, 1<a name="line.61"></a>
-<span class="sourceLineNo">062</span>      m_master = master;<a name="line.62"></a>
-<span class="sourceLineNo">063</span>    }<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    public HMaster getMaster()<a name="line.64"></a>
-<span class="sourceLineNo">065</span>    {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      return m_master;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    }<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    private HMaster m_master;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    // 22, 1<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.70"></a>
+<span class="sourceLineNo">051</span>     super("/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl");<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  }<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  <a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public interface Intf<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    extends org.jamon.AbstractTemplateProxy.Intf<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>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<a name="line.58"></a>
+<span class="sourceLineNo">059</span>    <a name="line.59"></a>
+<span class="sourceLineNo">060</span>  }<a name="line.60"></a>
+<span class="sourceLineNo">061</span>  public static class ImplData<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  {<a name="line.63"></a>
+<span class="sourceLineNo">064</span>    // 23, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>    public void setMaster(HMaster master)<a name="line.65"></a>
+<span class="sourceLineNo">066</span>    {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      // 23, 1<a name="line.67"></a>
+<span class="sourceLineNo">068</span>      m_master = master;<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    }<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    public HMaster getMaster()<a name="line.70"></a>
 <span class="sourceLineNo">071</span>    {<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      // 22, 1<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      m_servers = servers;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      m_servers__IsNotDefault = true;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>    }<a name="line.75"></a>
-<span class="sourceLineNo">076</span>    public List&lt;ServerName&gt; getServers()<a name="line.76"></a>
+<span class="sourceLineNo">072</span>      return m_master;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    }<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    private HMaster m_master;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    // 22, 1<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.76"></a>
 <span class="sourceLineNo">077</span>    {<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      return m_servers;<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    }<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    private List&lt;ServerName&gt; m_servers;<a name="line.80"></a>
-<span class="sourceLineNo">081</span>    public boolean getServers__IsNotDefault()<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return m_servers__IsNotDefault;<a name="line.83"></a>
-<span class="sourceLineNo">084</span>    }<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    private boolean m_servers__IsNotDefault;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  @Override<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return new ImplData();<a name="line.90"></a>
-<span class="sourceLineNo">091</span>  }<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  @Override public ImplData getImplData()<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  {<a name="line.93"></a>
-<span class="sourceLineNo">094</span>    return (ImplData) super.getImplData();<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>  <a name="line.96"></a>
-<span class="sourceLineNo">097</span>  protected List&lt;ServerName&gt; servers;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.98"></a>
+<span class="sourceLineNo">078</span>      // 22, 1<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      m_servers = servers;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      m_servers__IsNotDefault = true;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>    }<a name="line.81"></a>
+<span class="sourceLineNo">082</span>    public List&lt;ServerName&gt; getServers()<a name="line.82"></a>
+<span class="sourceLineNo">083</span>    {<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      return m_servers;<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    }<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    private List&lt;ServerName&gt; m_servers;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    public boolean getServers__IsNotDefault()<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      return m_servers__IsNotDefault;<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    }<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    private boolean m_servers__IsNotDefault;<a name="line.91"></a>
+<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  @Override<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.94"></a>
+<span class="sourceLineNo">095</span>  {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    return new ImplData();<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  @Override public ImplData getImplData()<a name="line.98"></a>
 <span class="sourceLineNo">099</span>  {<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    (getImplData()).setServers(p_servers);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>    return this;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  }<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  <a name="line.103"></a>
-<span class="sourceLineNo">104</span>  <a name="line.104"></a>
-<span class="sourceLineNo">105</span>  @Override<a name="line.105"></a>
-<span class="sourceLineNo">106</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    try<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    {<a name="line.108"></a>
-<span class="sourceLineNo">109</span>      return p_class<a name="line.109"></a>
-<span class="sourceLineNo">110</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.110"></a>
-<span class="sourceLineNo">111</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    }<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    catch (RuntimeException e)<a name="line.113"></a>
+<span class="sourceLineNo">100</span>    return (ImplData) super.getImplData();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  <a name="line.102"></a>
+<span class="sourceLineNo">103</span>  protected List&lt;ServerName&gt; servers;<a name="line.103"></a>
+<span class="sourceLineNo">104</span>  public final org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.104"></a>
+<span class="sourceLineNo">105</span>  {<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    (getImplData()).setServers(p_servers);<a name="line.106"></a>
+<span class="sourceLineNo">107</span>    return this;<a name="line.107"></a>
+<span class="sourceLineNo">108</span>  }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  <a name="line.109"></a>
+<span class="sourceLineNo">110</span>  <a name="line.110"></a>
+<span class="sourceLineNo">111</span>  @Override<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    try<a name="line.113"></a>
 <span class="sourceLineNo">114</span>    {<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      throw e;<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    }<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    catch (Exception e)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>    {<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      throw new RuntimeException(e);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    }<a name="line.120"></a>
-<span class="sourceLineNo">121</span>  }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>  <a name="line.122"></a>
-<span class="sourceLineNo">123</span>  @Override<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.125"></a>
-<span class="sourceLineNo">126</span>  }<a name="line.126"></a>
-<span class="sourceLineNo">127</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.127"></a>
-<span class="sourceLineNo">128</span>  {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    return new org.jamon.AbstractRenderer() {<a name="line.129"></a>
-<span class="sourceLineNo">130</span>      @Override<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.131"></a>
-<span class="sourceLineNo">132</span>        throws java.io.IOException<a name="line.132"></a>
-<span class="sourceLineNo">133</span>      {<a name="line.133"></a>
-<span class="sourceLineNo">134</span>        render(jamonWriter, master);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      }<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    };<a name="line.136"></a>
-<span class="sourceLineNo">137</span>  }<a name="line.137"></a>
-<span class="sourceLineNo">138</span>  <a name="line.138"></a>
-<span class="sourceLineNo">139</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    throws java.io.IOException<a name="line.140"></a>
-<span class="sourceLineNo">141</span>  {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    renderNoFlush(jamonWriter, master);<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    jamonWriter.flush();<a name="line.143"></a>
-<span class="sourceLineNo">144</span>  }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
+<span class="sourceLineNo">115</span>      return p_class<a name="line.115"></a>
+<span class="sourceLineNo">116</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.116"></a>
+<span class="sourceLineNo">117</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    }<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    catch (RuntimeException e)<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    {<a name="line.120"></a>
+<span class="sourceLineNo">121</span>      throw e;<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    }<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    catch (Exception e)<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    {<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      throw new RuntimeException(e);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    }<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>  <a name="line.128"></a>
+<span class="sourceLineNo">129</span>  @Override<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    return new RegionServerListTmplImpl(getTemplateManager(), getImplData());<a name="line.131"></a>
+<span class="sourceLineNo">132</span>  }<a name="line.132"></a>
+<span class="sourceLineNo">133</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  {<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    return new org.jamon.AbstractRenderer() {<a name="line.135"></a>
+<span class="sourceLineNo">136</span>      @Override<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.137"></a>
+<span class="sourceLineNo">138</span>        throws java.io.IOException<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      {<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        render(jamonWriter, master);<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>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.145"></a>
 <span class="sourceLineNo">146</span>    throws java.io.IOException<a name="line.146"></a>
 <span class="sourceLineNo">147</span>  {<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    ImplData implData = getImplData();<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    implData.setMaster(master);<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    instance.renderNoFlush(jamonWriter);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    reset();<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>}<a name="line.156"></a>
+<span class="sourceLineNo">148</span>    renderNoFlush(jamonWriter, master);<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    jamonWriter.flush();<a name="line.149"></a>
+<span class="sourceLineNo">150</span>  }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    throws java.io.IOException<a name="line.152"></a>
+<span class="sourceLineNo">153</span>  {<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    ImplData implData = getImplData();<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    implData.setMaster(master);<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    instance.renderNoFlush(jamonWriter);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    reset();<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>
 
 
 


[13/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 83a993e..29b47a3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -16,390 +16,396 @@
 <span class="sourceLineNo">008</span>// 33, 1<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import java.io.IOException;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 34, 1<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 35, 1<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 36, 1<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 37, 1<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.HConstants;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 38, 1<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 39, 1<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.21"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>// 40, 1<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>// 41, 1<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>// 42, 1<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.27"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>// 43, 1<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.29"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 44, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 45, 1<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.33"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>// 46, 1<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.35"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>// 47, 1<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.37"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>// 48, 1<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.39"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>// 49, 1<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.41"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>// 50, 1<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.43"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>// 51, 1<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.45"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>// 52, 1<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.47"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>// 53, 1<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.49"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>// 54, 1<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.51"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>// 55, 1<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.53"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>// 56, 1<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.55"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>// 57, 1<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.57"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>// 58, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.util.StringUtils;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>@org.jamon.annotations.Template(<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  requiredArguments = {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  optionalArguments = {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.74"></a>
-<span class="sourceLineNo">075</span>public class MasterStatusTmpl<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  extends org.jamon.AbstractTemplateProxy<a name="line.76"></a>
-<span class="sourceLineNo">077</span>{<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  <a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>     super(p_manager);<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>  protected MasterStatusTmpl(String p_path)<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    super(p_path);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  <a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public MasterStatusTmpl()<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  <a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public interface Intf<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.95"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>// 59, 1<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>// 60, 1<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>// 61, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>@org.jamon.annotations.Template(<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  requiredArguments = {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  optionalArguments = {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.80"></a>
+<span class="sourceLineNo">081</span>public class MasterStatusTmpl<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  extends org.jamon.AbstractTemplateProxy<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>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>     super(p_manager);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  <a name="line.89"></a>
+<span class="sourceLineNo">090</span>  protected MasterStatusTmpl(String p_path)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    super(p_path);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  <a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public MasterStatusTmpl()<a name="line.95"></a>
 <span class="sourceLineNo">096</span>  {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    <a name="line.97"></a>
-<span class="sourceLineNo">098</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // 20, 1<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public void setMaster(HMaster master)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      // 20, 1<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      m_master = master;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public HMaster getMaster()<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return m_master;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    private HMaster m_master;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // 29, 1<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.116"></a>
+<span class="sourceLineNo">097</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  <a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public interface Intf<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    <a name="line.103"></a>
+<span class="sourceLineNo">104</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // 20, 1<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    public void setMaster(HMaster master)<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // 20, 1<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      m_master = master;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    public HMaster getMaster()<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      // 29, 1<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      m_assignmentManager = assignmentManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      m_assignmentManager__IsNotDefault = true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public AssignmentManager getAssignmentManager()<a name="line.122"></a>
+<span class="sourceLineNo">118</span>      return m_master;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    private HMaster m_master;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // 29, 1<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      return m_assignmentManager;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    private AssignmentManager m_assignmentManager;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      return m_assignmentManager__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // 25, 1<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.133"></a>
+<span class="sourceLineNo">124</span>      // 29, 1<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      m_assignmentManager = assignmentManager;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      m_assignmentManager__IsNotDefault = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    public AssignmentManager getAssignmentManager()<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return m_assignmentManager;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    private AssignmentManager m_assignmentManager;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      // 25, 1<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public boolean getCatalogJanitorEnabled()<a name="line.139"></a>
+<span class="sourceLineNo">135</span>      return m_assignmentManager__IsNotDefault;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // 25, 1<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return m_catalogJanitorEnabled;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    private boolean m_catalogJanitorEnabled;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // 24, 1<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.150"></a>
+<span class="sourceLineNo">141</span>      // 25, 1<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    public boolean getCatalogJanitorEnabled()<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return m_catalogJanitorEnabled;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private boolean m_catalogJanitorEnabled;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      // 24, 1<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      m_deadServers = deadServers;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      m_deadServers__IsNotDefault = true;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.156"></a>
+<span class="sourceLineNo">152</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // 24, 1<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return m_deadServers;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean getDeadServers__IsNotDefault()<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return m_deadServers__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    private boolean m_deadServers__IsNotDefault;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // 26, 1<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    public void setFilter(String filter)<a name="line.167"></a>
+<span class="sourceLineNo">158</span>      // 24, 1<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      m_deadServers = deadServers;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      m_deadServers__IsNotDefault = true;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return m_deadServers;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    public boolean getDeadServers__IsNotDefault()<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      // 26, 1<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      m_filter = filter;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      m_filter__IsNotDefault = true;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public String getFilter()<a name="line.173"></a>
+<span class="sourceLineNo">169</span>      return m_deadServers__IsNotDefault;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    private boolean m_deadServers__IsNotDefault;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // 26, 1<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    public void setFilter(String filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      return m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    private String m_filter;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public boolean getFilter__IsNotDefault()<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    private boolean m_filter__IsNotDefault;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // 27, 1<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public void setFormat(String format)<a name="line.184"></a>
+<span class="sourceLineNo">175</span>      // 26, 1<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      m_filter = filter;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      m_filter__IsNotDefault = true;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public String getFilter()<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return m_filter;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    private String m_filter;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public boolean getFilter__IsNotDefault()<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // 27, 1<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      m_format = format;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      m_format__IsNotDefault = true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    public String getFormat()<a name="line.190"></a>
+<span class="sourceLineNo">186</span>      return m_filter__IsNotDefault;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private boolean m_filter__IsNotDefault;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // 27, 1<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    public void setFormat(String format)<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      return m_format;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    private String m_format;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    public boolean getFormat__IsNotDefault()<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return m_format__IsNotDefault;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    private boolean m_format__IsNotDefault;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // 21, 1<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.201"></a>
+<span class="sourceLineNo">192</span>      // 27, 1<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      m_format = format;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      m_format__IsNotDefault = true;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public String getFormat()<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return m_format;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    private String m_format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public boolean getFormat__IsNotDefault()<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // 21, 1<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      m_frags = frags;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      m_frags__IsNotDefault = true;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.207"></a>
+<span class="sourceLineNo">203</span>      return m_format__IsNotDefault;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    private boolean m_format__IsNotDefault;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // 21, 1<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.207"></a>
 <span class="sourceLineNo">208</span>    {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return m_frags;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean getFrags__IsNotDefault()<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return m_frags__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    private boolean m_frags__IsNotDefault;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    // 22, 1<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.218"></a>
+<span class="sourceLineNo">209</span>      // 21, 1<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      m_frags = frags;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      m_frags__IsNotDefault = true;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return m_frags;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public boolean getFrags__IsNotDefault()<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // 22, 1<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      m_metaLocation = metaLocation;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      m_metaLocation__IsNotDefault = true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    public ServerName getMetaLocation()<a name="line.224"></a>
+<span class="sourceLineNo">220</span>      return m_frags__IsNotDefault;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    private boolean m_frags__IsNotDefault;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    // 22, 1<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return m_metaLocation;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private ServerName m_metaLocation;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return m_metaLocation__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    // 28, 1<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    public void setServerManager(ServerManager serverManager)<a name="line.235"></a>
+<span class="sourceLineNo">226</span>      // 22, 1<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      m_metaLocation = metaLocation;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      m_metaLocation__IsNotDefault = true;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public ServerName getMetaLocation()<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return m_metaLocation;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    private ServerName m_metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      // 28, 1<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      m_serverManager = serverManager;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      m_serverManager__IsNotDefault = true;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public ServerManager getServerManager()<a name="line.241"></a>
+<span class="sourceLineNo">237</span>      return m_metaLocation__IsNotDefault;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    // 28, 1<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public void setServerManager(ServerManager serverManager)<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return m_serverManager;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private ServerManager m_serverManager;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public boolean getServerManager__IsNotDefault()<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return m_serverManager__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private boolean m_serverManager__IsNotDefault;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // 23, 1<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.252"></a>
+<span class="sourceLineNo">243</span>      // 28, 1<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      m_serverManager = serverManager;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      m_serverManager__IsNotDefault = true;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public ServerManager getServerManager()<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return m_serverManager;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    private ServerManager m_serverManager;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    public boolean getServerManager__IsNotDefault()<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // 23, 1<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      m_servers = servers;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      m_servers__IsNotDefault = true;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    public List&lt;ServerName&gt; getServers()<a name="line.258"></a>
+<span class="sourceLineNo">254</span>      return m_serverManager__IsNotDefault;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    private boolean m_serverManager__IsNotDefault;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // 23, 1<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      return m_servers;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private List&lt;ServerName&gt; m_servers;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public boolean getServers__IsNotDefault()<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return m_servers__IsNotDefault;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    private boolean m_servers__IsNotDefault;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return new ImplData();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Override public ImplData getImplData()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return (ImplData) super.getImplData();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  <a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected AssignmentManager assignmentManager;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.280"></a>
+<span class="sourceLineNo">260</span>      // 23, 1<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      m_servers = servers;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      m_servers__IsNotDefault = true;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public List&lt;ServerName&gt; getServers()<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return m_servers;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private List&lt;ServerName&gt; m_servers;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public boolean getServers__IsNotDefault()<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      return m_servers__IsNotDefault;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private boolean m_servers__IsNotDefault;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return new ImplData();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @Override public ImplData getImplData()<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return this;<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>  protected String filter;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    (getImplData()).setFilter(p_filter);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return this;<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>  protected String format;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    (getImplData()).setFormat(p_format);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    (getImplData()).setFrags(p_frags);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    return this;<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>  protected ServerName metaLocation;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    return this;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  <a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected ServerManager serverManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return this;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  <a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected List&lt;ServerName&gt; servers;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    (getImplData()).setServers(p_servers);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return this;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  <a name="line.341"></a>
-<span class="sourceLineNo">342</span>  <a name="line.342"></a>
-<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    try<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      return p_class<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    catch (RuntimeException e)<a name="line.351"></a>
+<span class="sourceLineNo">282</span>    return (ImplData) super.getImplData();<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>  protected AssignmentManager assignmentManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return this;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  <a name="line.298"></a>
+<span class="sourceLineNo">299</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return this;<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>  protected String filter;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    (getImplData()).setFilter(p_filter);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    return this;<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>  protected String format;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    (getImplData()).setFormat(p_format);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    return this;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  <a name="line.319"></a>
+<span class="sourceLineNo">320</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    (getImplData()).setFrags(p_frags);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return this;<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>  protected ServerName metaLocation;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return this;<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>  protected ServerManager serverManager;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return this;<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>  protected List&lt;ServerName&gt; servers;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    (getImplData()).setServers(p_servers);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return this;<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>  @Override<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try<a name="line.351"></a>
 <span class="sourceLineNo">352</span>    {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      throw e;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    catch (Exception e)<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      throw new RuntimeException(e);<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>  @Override<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    return new org.jamon.AbstractRenderer() {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        throws java.io.IOException<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        render(jamonWriter, master);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    };<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  <a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    throws java.io.IOException<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    renderNoFlush(jamonWriter, master);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    jamonWriter.flush();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
+<span class="sourceLineNo">353</span>      return p_class<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    catch (RuntimeException e)<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw e;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    catch (Exception e)<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new RuntimeException(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  <a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return new org.jamon.AbstractRenderer() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      @Override<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        throws java.io.IOException<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        render(jamonWriter, master);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    };<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  <a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
 <span class="sourceLineNo">384</span>    throws java.io.IOException<a name="line.384"></a>
 <span class="sourceLineNo">385</span>  {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    ImplData implData = getImplData();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    implData.setMaster(master);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    instance.renderNoFlush(jamonWriter);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    reset();<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>  <a name="line.393"></a>
-<span class="sourceLineNo">394</span>}<a name="line.394"></a>
+<span class="sourceLineNo">386</span>    renderNoFlush(jamonWriter, master);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    jamonWriter.flush();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    throws java.io.IOException<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    ImplData implData = getImplData();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    implData.setMaster(master);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    instance.renderNoFlush(jamonWriter);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    reset();<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>}<a name="line.400"></a>
 
 
 


[09/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/downloads.html
----------------------------------------------------------------------
diff --git a/downloads.html b/downloads.html
index 7e90a21..c4bddef 100644
--- a/downloads.html
+++ b/downloads.html
@@ -7,7 +7,7 @@
   <head>
     <meta charset="UTF-8" />
     <meta name="viewport" content="width=device-width, initial-scale=1.0" />
-    <meta name="Date-Revision-yyyymmdd" content="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; Apache HBase Downloads</title>
     <link rel="stylesheet" href="./css/apache-maven-fluido-1.5-HBASE.min.css" />
@@ -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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/export_control.html
----------------------------------------------------------------------
diff --git a/export_control.html b/export_control.html
index dd646d0..6bdbbe8 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Export Control
@@ -331,7 +331,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/index.html
----------------------------------------------------------------------
diff --git a/index.html b/index.html
index ad11a4c..a14216a 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -411,7 +411,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/integration.html
----------------------------------------------------------------------
diff --git a/integration.html b/integration.html
index 03aa080..49cc5b8 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -291,7 +291,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/issue-tracking.html
----------------------------------------------------------------------
diff --git a/issue-tracking.html b/issue-tracking.html
index 7fa6f5b..f811f25 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -288,7 +288,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/license.html
----------------------------------------------------------------------
diff --git a/license.html b/license.html
index d92a628..36355c0 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -491,7 +491,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/mail-lists.html
----------------------------------------------------------------------
diff --git a/mail-lists.html b/mail-lists.html
index 728ef79..e2c78cd 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -341,7 +341,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/metrics.html
----------------------------------------------------------------------
diff --git a/metrics.html b/metrics.html
index f39d2fa..87c5164 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) Metrics
@@ -459,7 +459,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/old_news.html
----------------------------------------------------------------------
diff --git a/old_news.html b/old_news.html
index 631d5d4..cf0e4d2 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Old Apache HBase (TM) News
@@ -440,7 +440,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/plugin-management.html
----------------------------------------------------------------------
diff --git a/plugin-management.html b/plugin-management.html
index a705a78..9349584 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/plugins.html
----------------------------------------------------------------------
diff --git a/plugins.html b/plugins.html
index 43633be..38e9108 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -375,7 +375,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/poweredbyhbase.html
----------------------------------------------------------------------
diff --git a/poweredbyhbase.html b/poweredbyhbase.html
index 4716d57..6f52495 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -769,7 +769,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/project-info.html
----------------------------------------------------------------------
diff --git a/project-info.html b/project-info.html
index c580e4c..f6f29d6 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -335,7 +335,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/project-reports.html
----------------------------------------------------------------------
diff --git a/project-reports.html b/project-reports.html
index 03655ba..8791ed4 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -305,7 +305,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/project-summary.html
----------------------------------------------------------------------
diff --git a/project-summary.html b/project-summary.html
index a3a4711..d2c283c 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/replication.html
----------------------------------------------------------------------
diff --git a/replication.html b/replication.html
index 44a1f04..07c7f21 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Apache HBase (TM) Replication
@@ -303,7 +303,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/resources.html
----------------------------------------------------------------------
diff --git a/resources.html b/resources.html
index a68d439..c5a4b07 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -331,7 +331,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/source-repository.html
----------------------------------------------------------------------
diff --git a/source-repository.html b/source-repository.html
index ea57aaf..b460d8a 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -299,7 +299,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/sponsors.html
----------------------------------------------------------------------
diff --git a/sponsors.html b/sponsors.html
index 1638cd5..be2a862 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -333,7 +333,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/supportingprojects.html
----------------------------------------------------------------------
diff --git a/supportingprojects.html b/supportingprojects.html
index d9a1ca7..bde9ac2 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -520,7 +520,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/team-list.html
----------------------------------------------------------------------
diff --git a/team-list.html b/team-list.html
index 4b1d9b6..d71d0b9 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -626,96 +626,102 @@
 <td><a class="externalLink" href="mailto:rawson@apache.org">rawson@apache.org</a></td>
 <td>-8</td></tr>
 <tr class="a">
+<td><img src="http://www.gravatar.com/avatar/e7f9ef3d97f18d8660691bdeabe966eb?d=mm&amp;s=60" alt="" /></td>
+<td><a name="reidchan"></a>reidchan</td>
+<td>Reid Chan</td>
+<td><a class="externalLink" href="mailto:reidchan@apache.org">reidchan@apache.org</a></td>
+<td>+8</td></tr>
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/a25c89dd7cb09995d956995d014e66a8?d=mm&amp;s=60" alt="" /></td>
 <td><a name="sershe"></a>sershe</td>
 <td>Sergey Shelukhin</td>
 <td><a class="externalLink" href="mailto:sershe@apache.org">sershe@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/641aec2fabc99f4c1b7ff89b8aa09706?d=mm&amp;s=60" alt="" /></td>
 <td><a name="ssrungarapu"></a>ssrungarapu</td>
 <td>Srikanth Srungarapu</td>
 <td><a class="externalLink" href="mailto:ssrungarapu@apache.org">ssrungarapu@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/6dcb921ad14013901bd92e6ed943916f?d=mm&amp;s=60" alt="" /></td>
 <td><a name="stack"></a>stack</td>
 <td>Michael Stack</td>
 <td><a class="externalLink" href="mailto:stack@apache.org">stack@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/9060b03f6824864ef43d397d9fe41096?d=mm&amp;s=60" alt="" /></td>
 <td><a name="syuanjiang"></a>syuanjiang</td>
 <td>Stephen Yuan Jiang</td>
 <td><a class="externalLink" href="mailto:syuanjiang@apache.org">syuanjiang@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/468276b3793b40ec08528ad81092b2ef?d=mm&amp;s=60" alt="" /></td>
 <td><a name="tedyu"></a>tedyu</td>
 <td>Ted Yu</td>
 <td><a class="externalLink" href="mailto:yuzhihong@gmail.com">yuzhihong@gmail.com</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/4d175cf9f78c36378972941bb01e8c75?d=mm&amp;s=60" alt="" /></td>
 <td><a name="todd"></a>todd</td>
 <td>Todd Lipcon</td>
 <td><a class="externalLink" href="mailto:todd@apache.org">todd@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/c73b058d47f2db1621b6f55a2f22f040?d=mm&amp;s=60" alt="" /></td>
 <td><a name="toffer"></a>toffer</td>
 <td>Francis Liu</td>
 <td><a class="externalLink" href="mailto:toffer@apache.org">toffer@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/b370e829fb32221574ad5edd21393bed?d=mm&amp;s=60" alt="" /></td>
 <td><a name="vikasv"></a>vikasv</td>
 <td>Vikas Vishwakarma</td>
 <td><a class="externalLink" href="mailto:vikasv@apache.org">vikasv@apache.org</a></td>
 <td>+5</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/3973f9c377db612c7f22afdfa0fef383?d=mm&amp;s=60" alt="" /></td>
 <td><a name="virag"></a>virag</td>
 <td>Virag Kothari</td>
 <td><a class="externalLink" href="mailto:virag@yahoo-inc.com">virag@yahoo-inc.com</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/8c7c9edef71d2f5b6f0a673a6ded3bc2?d=mm&amp;s=60" alt="" /></td>
 <td><a name="yangzhe1991"></a>yangzhe1991</td>
 <td>Phil Yang</td>
 <td><a class="externalLink" href="mailto:yangzhe1991@apache.org">yangzhe1991@apache.org</a></td>
 <td>+8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/fe45f6e161ee945f8d8d8da140ac3100?d=mm&amp;s=60" alt="" /></td>
 <td><a name="zghao"></a>zghao</td>
 <td>Guanghao Zhang</td>
 <td><a class="externalLink" href="mailto:zghao@apache.org">zghao@apache.org</a></td>
 <td>+8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/de2edb8ef5f82e4a40662d4ff5658ab3?d=mm&amp;s=60" alt="" /></td>
 <td><a name="zhangduo"></a>zhangduo</td>
 <td>Duo Zhang</td>
 <td><a class="externalLink" href="mailto:zhangduo@apache.org">zhangduo@apache.org</a></td>
 <td>+8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/446df0e403724a7f8b7bd6998ff46b7a?d=mm&amp;s=60" alt="" /></td>
 <td><a name="zjushch"></a>zjushch</td>
 <td>Chunhui Shen</td>
 <td><a class="externalLink" href="mailto:zjushch@apache.org">zjushch@apache.org</a></td>
 <td>+8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/bb2eb1414c96df6676df941f006a9917?d=mm&amp;s=60" alt="" /></td>
 <td><a name="churro"></a>churro</td>
 <td>Rahul Gidwani</td>
 <td><a class="externalLink" href="mailto:churro@apache.org">churro@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="http://www.gravatar.com/avatar/6d5e811854c8c2f81bd906cb93666e4e?d=mm&amp;s=60" alt="" /></td>
 <td><a name="yiliang"></a>yiliang</td>
 <td>Yi Liang</td>
 <td><a class="externalLink" href="mailto:yiliang@apache.org">yiliang@apache.org</a></td>
 <td>-8</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="http://www.gravatar.com/avatar/5f192ad7cce9920785ca7a12ef790166?d=mm&amp;s=60" alt="" /></td>
 <td><a name="zyork"></a>zyork</td>
 <td>Zach York</td>
@@ -736,7 +742,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/allclasses-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-frame.html b/testdevapidocs/allclasses-frame.html
index 8739c35..5c9fc96 100644
--- a/testdevapidocs/allclasses-frame.html
+++ b/testdevapidocs/allclasses-frame.html
@@ -1135,6 +1135,8 @@
 <li><a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetLastFlushedSequenceId</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetProcedureResult</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client" target="classFrame">TestGetProcedureResult.DummyProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad</a></li>
+<li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad.MyMaster</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">TestGlobalFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">TestGlobalFilter.RecordingFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.Initializer.html" title="class in org.apache.hadoop.hbase.http" target="classFrame">TestGlobalFilter.RecordingFilter.Initializer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/allclasses-noframe.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/allclasses-noframe.html b/testdevapidocs/allclasses-noframe.html
index 2770ed4..b839bd9 100644
--- a/testdevapidocs/allclasses-noframe.html
+++ b/testdevapidocs/allclasses-noframe.html
@@ -1135,6 +1135,8 @@
 <li><a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master">TestGetLastFlushedSequenceId</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult</a></li>
 <li><a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.DummyProcedure.html" title="class in org.apache.hadoop.hbase.client">TestGetProcedureResult.DummyProcedure</a></li>
+<li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></li>
+<li><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.html" title="class in org.apache.hadoop.hbase.http">TestGlobalFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http">TestGlobalFilter.RecordingFilter</a></li>
 <li><a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.Initializer.html" title="class in org.apache.hadoop.hbase.http">TestGlobalFilter.RecordingFilter.Initializer</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/index-all.html b/testdevapidocs/index-all.html
index 5f83341..1f76036 100644
--- a/testdevapidocs/index-all.html
+++ b/testdevapidocs/index-all.html
@@ -1027,6 +1027,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#after--">after()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html" title="class in org.apache.hadoop.hbase.master">TestAssignmentManagerMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#after--">after()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html#after--">after()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMirroringTableStateManager.html#after--">after()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMirroringTableStateManager.html" title="class in org.apache.hadoop.hbase.master">TestMirroringTableStateManager</a></dt>
@@ -2263,6 +2265,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#bbb">bbb</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#bbc">bbc</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestOperation.html#BC">BC</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestOperation.html" title="class in org.apache.hadoop.hbase.client">TestOperation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.html#bc">bc</a></span> - Variable in class org.apache.hadoop.hbase.io.hfile.bucket.<a href="org/apache/hadoop/hbase/io/hfile/bucket/TestBucketWriterThread.html" title="class in org.apache.hadoop.hbase.io.hfile.bucket">TestBucketWriterThread</a></dt>
@@ -5093,6 +5097,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master">TestGetLastFlushedSequenceId</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestHMasterCommandLine.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master">TestHMasterCommandLine</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html#CLASS_RULE">CLASS_RULE</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master">TestHMasterRPCException</a></dt>
@@ -6979,6 +6985,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#CLUSTER">CLUSTER</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html" title="class in org.apache.hadoop.hbase.master">TestAssignmentManagerMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#cluster">cluster</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html#cluster">cluster</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.NoFilesToDischarge.html#cluster">cluster</a></span> - Variable in class org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/SpaceQuotaHelperForTests.NoFilesToDischarge.html" title="class in org.apache.hadoop.hbase.quotas">SpaceQuotaHelperForTests.NoFilesToDischarge</a></dt>
@@ -23302,6 +23310,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestClockSkewDetection.html" title="class in org.apache.hadoop.hbase.master">TestClockSkewDetection</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master">TestHMasterRPCException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMaster.html#LOG">LOG</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMaster.html" title="class in org.apache.hadoop.hbase.master">TestMaster</a></dt>
@@ -24501,6 +24511,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#MASTER">MASTER</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html" title="class in org.apache.hadoop.hbase.master">TestAssignmentManagerMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#master">master</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html#master">master</a></span> - Variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master">TestHMasterRPCException</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html#master">master</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics</a></dt>
@@ -25910,6 +25922,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ScanPerformanceEvaluation.MyMapper.html#MyMapper--">MyMapper()</a></span> - Constructor for class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ScanPerformanceEvaluation.MyMapper.html" title="class in org.apache.hadoop.hbase">ScanPerformanceEvaluation.MyMapper</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html#MyMaster-org.apache.hadoop.conf.Configuration-">MyMaster(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html#MyMaster-org.apache.hadoop.conf.Configuration-">MyMaster(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics.MyMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html#MyMaster-org.apache.hadoop.conf.Configuration-">MyMaster(Configuration)</a></span> - Constructor for class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMergeTransactionOnCluster.MyMaster</a></dt>
@@ -31878,6 +31892,11 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html#readStoreFile-int-org.apache.hadoop.hbase.regionserver.BloomType-java.util.List-org.apache.hadoop.fs.Path-">readStoreFile(int, BloomType, List&lt;KeyValue&gt;, Path)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompoundBloomFilter.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompoundBloomFilter</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#readStoreFileLikeScanner-org.apache.hadoop.fs.Path-">readStoreFileLikeScanner(Path)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
+<dd>
+<div class="block">Read a storefile in the same manner as a scanner -- using non-positional reads and
+ without waiting for prefetch to complete.</div>
+</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.html#readThreads">readThreads</a></span> - Variable in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/StripeCompactionsPerformanceEvaluation.html" title="class in org.apache.hadoop.hbase">StripeCompactionsPerformanceEvaluation</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.html#readTrailer-org.apache.hadoop.fs.Path-">readTrailer(Path)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestFixedFileTrailer.html" title="class in org.apache.hadoop.hbase.io.hfile">TestFixedFileTrailer</a></dt>
@@ -38965,6 +38984,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#startCluster--">startCluster()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html" title="class in org.apache.hadoop.hbase.master">TestAssignmentManagerMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#startCluster--">startCluster()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html#startCluster--">startCluster()</a></span> - Static method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html#startCluster--">startCluster()</a></span> - Static method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMove.html" title="class in org.apache.hadoop.hbase.regionserver">TestRegionMove</a></dt>
@@ -42951,6 +42972,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestDeadServer.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestDeadServer.html" title="class in org.apache.hadoop.hbase.master">TestDeadServer</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMaster.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMaster.html" title="class in org.apache.hadoop.hbase.master">TestMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.html#TEST_UTIL">TEST_UTIL</a></span> - Static variable in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.html" title="class in org.apache.hadoop.hbase.master">TestMasterBalanceThrottling</a></dt>
@@ -50372,6 +50395,14 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestFromClientSide.html#testGetRegionsInRange--">testGetRegionsInRange()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestFromClientSide.html" title="class in org.apache.hadoop.hbase.client">TestFromClientSide</a></dt>
 <dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#TestGetReplicationLoad--">TestGetReplicationLoad()</a></span> - Constructor for class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
+<dt><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad.MyMaster</span></a> - Class in <a href="org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#testGetReplicationMetrics--">testGetReplicationMetrics()</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/security/access/TestAccessController.html#testGetReplicationPeerConfig--">testGetReplicationPeerConfig()</a></span> - Method in class org.apache.hadoop.hbase.security.access.<a href="org/apache/hadoop/hbase/security/access/TestAccessController.html" title="class in org.apache.hadoop.hbase.security.access">TestAccessController</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestGet.html#testGetRowConstructor--">testGetRowConstructor()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGet.html" title="class in org.apache.hadoop.hbase.client">TestGet</a></dt>
@@ -55861,6 +55892,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#testPrefetch--">testPrefetch()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#testPrefetchRace--">testPrefetchRace()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#testPrefetchSetInHCDWorks--">testPrefetchSetInHCDWorks()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/filter/TestFilter.html#testPrefixFilter--">testPrefixFilter()</a></span> - Method in class org.apache.hadoop.hbase.filter.<a href="org/apache/hadoop/hbase/filter/TestFilter.html" title="class in org.apache.hadoop.hbase.filter">TestFilter</a></dt>
@@ -63647,6 +63680,10 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html#testWithMockedMapReduceSingleRegion--">testWithMockedMapReduceSingleRegion()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatTestBase</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#testWithMockedMapReduceWithNoStartRowStopRow--">testWithMockedMapReduceWithNoStartRowStopRow()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>
+<dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#testWithMockedMapReduceWithSplitsPerRegion--">testWithMockedMapReduceWithSplitsPerRegion()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.html#testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily--">testWithMultipleDeleteFamilyMarkersOfSameRowSameFamily()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestImportExport.html" title="class in org.apache.hadoop.hbase.mapreduce">TestImportExport</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestMultipleTimestamps.html#testWithMultipleVersionDeletes--">testWithMultipleVersionDeletes()</a></span> - Method in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestMultipleTimestamps.html" title="class in org.apache.hadoop.hbase.client">TestMultipleTimestamps</a></dt>
@@ -64590,6 +64627,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RSRpcServicesWithScanTimeout.html#tryNumber">tryNumber</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestClientScannerRPCTimeout.RSRpcServicesWithScanTimeout.html" title="class in org.apache.hadoop.hbase.client">TestClientScannerRPCTimeout.RSRpcServicesWithScanTimeout</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html#tryRegionServerReport-long-long-">tryRegionServerReport(long, long)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html#tryRegionServerReport-long-long-">tryRegionServerReport(long, long)</a></span> - Method in class org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestMasterMetrics.MyMaster</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html#tryRegionServerReport-long-long-">tryRegionServerReport(long, long)</a></span> - Method in class org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS.html" title="class in org.apache.hadoop.hbase.regionserver">TestCompactionInDeadRegionServer.IgnoreYouAreDeadRS</a></dt>
@@ -68054,7 +68093,7 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestHFile.html#writeStoreFile--">writeStoreFile()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestHFile.html" title="class in org.apache.hadoop.hbase.io.hfile">TestHFile</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#writeStoreFile--">writeStoreFile()</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#writeStoreFile-java.lang.String-">writeStoreFile(String)</a></span> - Method in class org.apache.hadoop.hbase.io.hfile.<a href="org/apache/hadoop/hbase/io/hfile/TestPrefetch.html" title="class in org.apache.hadoop.hbase.io.hfile">TestPrefetch</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.html#writeStoreFile-org.apache.hadoop.hbase.regionserver.StoreFileWriter-byte:A-byte:A-byte:A-org.apache.hadoop.hbase.KeyValue.Type-int-">writeStoreFile(StoreFileWriter, byte[], byte[], byte[], KeyValue.Type, int)</a></span> - Static method in class org.apache.hadoop.hbase.mob.compactions.<a href="org/apache/hadoop/hbase/mob/compactions/TestPartitionedMobCompactor.html" title="class in org.apache.hadoop.hbase.mob.compactions">TestPartitionedMobCompactor</a></dt>
 <dd>
@@ -68171,6 +68210,8 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.ProcedureMetrics.html#yieldNum">yieldNum</a></span> - Variable in class org.apache.hadoop.hbase.procedure2.<a href="org/apache/hadoop/hbase/procedure2/TestProcedureMetrics.ProcedureMetrics.html" title="class in org.apache.hadoop.hbase.procedure2">TestProcedureMetrics.ProcedureMetrics</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#yya">yya</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html#yyy">yyy</a></span> - Static variable in class org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestTableSnapshotScanner.html" title="class in org.apache.hadoop.hbase.client">TestTableSnapshotScanner</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#yyy">yyy</a></span> - Static variable in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html" title="class in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat</a></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 93b9ec4..85a21c5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html
@@ -232,7 +232,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, lis
 tDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSpli
 tOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 cb66231..07b5d06 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseClassTestRule.html
@@ -3265,22 +3265,26 @@
 </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">TestMasterBalanceThrottling.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetReplicationLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.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">TestMasterFileSystemWithWALDir.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterFileSystemWithWALDir.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterBalanceThrottling.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.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">TestMetaAssignmentWithStopMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMasterFileSystemWithWALDir.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterFileSystemWithWALDir.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">TestMirroringTableStateManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMirroringTableStateManager.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestMetaAssignmentWithStopMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.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">TestMirroringTableStateManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMirroringTableStateManager.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">TestMasterMetricsWrapper.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
 </tbody>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 1d54bcf..f940288 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/HBaseTestingUtility.html
@@ -2004,65 +2004,69 @@
 </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">TestMasterBalanceThrottling.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetReplicationLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.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">TestMasterBalanceThrottling.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterBalanceThrottling.html#TEST_UTIL">TEST_UTIL</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestMirroringTableStateManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMirroringTableStateManager.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">TestMasterMetricsWrapper.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetricsWrapper.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">TestHMasterCommandLine.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html#TESTING_UTIL">TESTING_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">TestGetInfoPort.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetInfoPort.html#testUtil">testUtil</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestHMasterRPCException.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterRPCException.html#testUtil">testUtil</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">TestGetLastFlushedSequenceId.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html#testUtil">testUtil</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">TestMasterNoCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterNoCluster.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">TestShutdownBackupMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestShutdownBackupMaster.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">TestMasterFileSystem.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterFileSystem.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">TestServerCrashProcedureStuck.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestServerCrashProcedureStuck.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">TestShutdownWithNoRegionServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestShutdownWithNoRegionServer.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">TestRestartCluster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestRestartCluster.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">TestServerCrashProcedureCarryingMetaStuck.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestServerCrashProcedureCarryingMetaStuck.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">TestMasterFileSystemWithWALDir.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMasterFileSystemWithWALDir.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">TestMetaAssignmentWithStopMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestMetaAssignmentWithStopMaster.html#UTIL">UTIL</a></span></code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/class-use/MiniHBaseCluster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/class-use/MiniHBaseCluster.html b/testdevapidocs/org/apache/hadoop/hbase/class-use/MiniHBaseCluster.html
index b00bd75..bfd8d30 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/class-use/MiniHBaseCluster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/class-use/MiniHBaseCluster.html
@@ -415,10 +415,14 @@
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
-<td class="colLast"><span class="typeNameLabel">TestAssignmentManagerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#CLUSTER">CLUSTER</a></span></code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">TestGetReplicationLoad.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#cluster">cluster</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TestAssignmentManagerMetrics.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestAssignmentManagerMetrics.html#CLUSTER">CLUSTER</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
 <td class="colLast"><span class="typeNameLabel">TestWarmupRegion.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestWarmupRegion.html#myCluster">myCluster</a></span></code>&nbsp;</td>
 </tr>
 </tbody>


[30/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
index ec479b9..cfefc40 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
@@ -350,494 +350,487 @@
 <span class="sourceLineNo">342</span>  public void saslReadAndProcess(ByteBuff saslToken) throws IOException,<a name="line.342"></a>
 <span class="sourceLineNo">343</span>      InterruptedException {<a name="line.343"></a>
 <span class="sourceLineNo">344</span>    if (saslContextEstablished) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      if (RpcServer.LOG.isTraceEnabled())<a name="line.345"></a>
-<span class="sourceLineNo">346</span>        RpcServer.LOG.trace("Have read input token of size " + saslToken.limit()<a name="line.346"></a>
-<span class="sourceLineNo">347</span>            + " for processing by saslServer.unwrap()");<a name="line.347"></a>
-<span class="sourceLineNo">348</span><a name="line.348"></a>
-<span class="sourceLineNo">349</span>      if (!useWrap) {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        processOneRpc(saslToken);<a name="line.350"></a>
-<span class="sourceLineNo">351</span>      } else {<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        byte[] b = saslToken.hasArray() ? saslToken.array() : saslToken.toBytes();<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        byte [] plaintextData;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>        if (useCryptoAesWrap) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          // unwrap with CryptoAES<a name="line.355"></a>
-<span class="sourceLineNo">356</span>          plaintextData = cryptoAES.unwrap(b, 0, b.length);<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        } else {<a name="line.357"></a>
-<span class="sourceLineNo">358</span>          plaintextData = saslServer.unwrap(b, 0, b.length);<a name="line.358"></a>
-<span class="sourceLineNo">359</span>        }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>        processUnwrappedData(plaintextData);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      }<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    } else {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      byte[] replyToken;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      try {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        if (saslServer == null) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>          saslServer =<a name="line.366"></a>
-<span class="sourceLineNo">367</span>              new HBaseSaslRpcServer(authMethod, rpcServer.saslProps, rpcServer.secretManager);<a name="line.367"></a>
-<span class="sourceLineNo">368</span>          if (RpcServer.LOG.isDebugEnabled()) {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>            RpcServer.LOG<a name="line.369"></a>
-<span class="sourceLineNo">370</span>                .debug("Created SASL server with mechanism = " + authMethod.getMechanismName());<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>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>          RpcServer.LOG.debug("Have read input token of size " + saslToken.limit()<a name="line.374"></a>
-<span class="sourceLineNo">375</span>              + " for processing by saslServer.evaluateResponse()");<a name="line.375"></a>
-<span class="sourceLineNo">376</span>        }<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        replyToken = saslServer<a name="line.377"></a>
-<span class="sourceLineNo">378</span>            .evaluateResponse(saslToken.hasArray() ? saslToken.array() : saslToken.toBytes());<a name="line.378"></a>
-<span class="sourceLineNo">379</span>      } catch (IOException e) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        IOException sendToClient = e;<a name="line.380"></a>
-<span class="sourceLineNo">381</span>        Throwable cause = e;<a name="line.381"></a>
-<span class="sourceLineNo">382</span>        while (cause != null) {<a name="line.382"></a>
-<span class="sourceLineNo">383</span>          if (cause instanceof InvalidToken) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>            sendToClient = (InvalidToken) cause;<a name="line.384"></a>
-<span class="sourceLineNo">385</span>            break;<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          }<a name="line.386"></a>
-<span class="sourceLineNo">387</span>          cause = cause.getCause();<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        }<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        doRawSaslReply(SaslStatus.ERROR, null, sendToClient.getClass().getName(),<a name="line.389"></a>
-<span class="sourceLineNo">390</span>          sendToClient.getLocalizedMessage());<a name="line.390"></a>
-<span class="sourceLineNo">391</span>        this.rpcServer.metrics.authenticationFailure();<a name="line.391"></a>
-<span class="sourceLineNo">392</span>        String clientIP = this.toString();<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        // attempting user could be null<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        RpcServer.AUDITLOG<a name="line.394"></a>
-<span class="sourceLineNo">395</span>            .warn(RpcServer.AUTH_FAILED_FOR + clientIP + ":" + saslServer.getAttemptingUser());<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        throw e;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      }<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      if (replyToken != null) {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.399"></a>
-<span class="sourceLineNo">400</span>          RpcServer.LOG.debug("Will send token of size " + replyToken.length<a name="line.400"></a>
-<span class="sourceLineNo">401</span>              + " from saslServer.");<a name="line.401"></a>
-<span class="sourceLineNo">402</span>        }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>        doRawSaslReply(SaslStatus.SUCCESS, new BytesWritable(replyToken), null,<a name="line.403"></a>
-<span class="sourceLineNo">404</span>            null);<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      }<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      if (saslServer.isComplete()) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        String qop = saslServer.getNegotiatedQop();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        useWrap = qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>        ugi = getAuthorizedUgi(saslServer.getAuthorizationID());<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.410"></a>
-<span class="sourceLineNo">411</span>          RpcServer.LOG.debug("SASL server context established. Authenticated client: " + ugi +<a name="line.411"></a>
-<span class="sourceLineNo">412</span>              ". Negotiated QoP is " + qop);<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        }<a name="line.413"></a>
-<span class="sourceLineNo">414</span>        this.rpcServer.metrics.authenticationSuccess();<a name="line.414"></a>
-<span class="sourceLineNo">415</span>        RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        saslContextEstablished = true;<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      }<a name="line.417"></a>
-<span class="sourceLineNo">418</span>    }<a name="line.418"></a>
-<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
-<span class="sourceLineNo">420</span><a name="line.420"></a>
-<span class="sourceLineNo">421</span>  private void processUnwrappedData(byte[] inBuf) throws IOException, InterruptedException {<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    ReadableByteChannel ch = Channels.newChannel(new ByteArrayInputStream(inBuf));<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    // Read all RPCs contained in the inBuf, even partial ones<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    while (true) {<a name="line.424"></a>
-<span class="sourceLineNo">425</span>      int count;<a name="line.425"></a>
-<span class="sourceLineNo">426</span>      if (unwrappedDataLengthBuffer.remaining() &gt; 0) {<a name="line.426"></a>
-<span class="sourceLineNo">427</span>        count = this.rpcServer.channelRead(ch, unwrappedDataLengthBuffer);<a name="line.427"></a>
-<span class="sourceLineNo">428</span>        if (count &lt;= 0 || unwrappedDataLengthBuffer.remaining() &gt; 0)<a name="line.428"></a>
-<span class="sourceLineNo">429</span>          return;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      }<a name="line.430"></a>
-<span class="sourceLineNo">431</span><a name="line.431"></a>
-<span class="sourceLineNo">432</span>      if (unwrappedData == null) {<a name="line.432"></a>
-<span class="sourceLineNo">433</span>        unwrappedDataLengthBuffer.flip();<a name="line.433"></a>
-<span class="sourceLineNo">434</span>        int unwrappedDataLength = unwrappedDataLengthBuffer.getInt();<a name="line.434"></a>
-<span class="sourceLineNo">435</span><a name="line.435"></a>
-<span class="sourceLineNo">436</span>        if (unwrappedDataLength == RpcClient.PING_CALL_ID) {<a name="line.436"></a>
-<span class="sourceLineNo">437</span>          if (RpcServer.LOG.isDebugEnabled())<a name="line.437"></a>
-<span class="sourceLineNo">438</span>            RpcServer.LOG.debug("Received ping message");<a name="line.438"></a>
-<span class="sourceLineNo">439</span>          unwrappedDataLengthBuffer.clear();<a name="line.439"></a>
-<span class="sourceLineNo">440</span>          continue; // ping message<a name="line.440"></a>
-<span class="sourceLineNo">441</span>        }<a name="line.441"></a>
-<span class="sourceLineNo">442</span>        unwrappedData = ByteBuffer.allocate(unwrappedDataLength);<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>      count = this.rpcServer.channelRead(ch, unwrappedData);<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if (count &lt;= 0 || unwrappedData.remaining() &gt; 0)<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        return;<a name="line.447"></a>
-<span class="sourceLineNo">448</span><a name="line.448"></a>
-<span class="sourceLineNo">449</span>      if (unwrappedData.remaining() == 0) {<a name="line.449"></a>
-<span class="sourceLineNo">450</span>        unwrappedDataLengthBuffer.clear();<a name="line.450"></a>
-<span class="sourceLineNo">451</span>        unwrappedData.flip();<a name="line.451"></a>
-<span class="sourceLineNo">452</span>        processOneRpc(new SingleByteBuff(unwrappedData));<a name="line.452"></a>
-<span class="sourceLineNo">453</span>        unwrappedData = null;<a name="line.453"></a>
-<span class="sourceLineNo">454</span>      }<a name="line.454"></a>
-<span class="sourceLineNo">455</span>    }<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  }<a name="line.456"></a>
-<span class="sourceLineNo">457</span><a name="line.457"></a>
-<span class="sourceLineNo">458</span>  public void processOneRpc(ByteBuff buf) throws IOException,<a name="line.458"></a>
-<span class="sourceLineNo">459</span>      InterruptedException {<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    if (connectionHeaderRead) {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>      processRequest(buf);<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    } else {<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      processConnectionHeader(buf);<a name="line.463"></a>
-<span class="sourceLineNo">464</span>      this.connectionHeaderRead = true;<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      if (!authorizeConnection()) {<a name="line.465"></a>
-<span class="sourceLineNo">466</span>        // Throw FatalConnectionException wrapping ACE so client does right thing and closes<a name="line.466"></a>
-<span class="sourceLineNo">467</span>        // down the connection instead of trying to read non-existent retun.<a name="line.467"></a>
-<span class="sourceLineNo">468</span>        throw new AccessDeniedException("Connection from " + this + " for service " +<a name="line.468"></a>
-<span class="sourceLineNo">469</span>          connectionHeader.getServiceName() + " is unauthorized for user: " + ugi);<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      }<a name="line.470"></a>
-<span class="sourceLineNo">471</span>      this.user = this.rpcServer.userProvider.create(this.ugi);<a name="line.471"></a>
-<span class="sourceLineNo">472</span>    }<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  }<a name="line.473"></a>
-<span class="sourceLineNo">474</span><a name="line.474"></a>
-<span class="sourceLineNo">475</span>  private boolean authorizeConnection() throws IOException {<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    try {<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      // If auth method is DIGEST, the token was obtained by the<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      // real user for the effective user, therefore not required to<a name="line.478"></a>
-<span class="sourceLineNo">479</span>      // authorize real user. doAs is allowed only for simple or kerberos<a name="line.479"></a>
-<span class="sourceLineNo">480</span>      // authentication<a name="line.480"></a>
-<span class="sourceLineNo">481</span>      if (ugi != null &amp;&amp; ugi.getRealUser() != null<a name="line.481"></a>
-<span class="sourceLineNo">482</span>          &amp;&amp; (authMethod != AuthMethod.DIGEST)) {<a name="line.482"></a>
-<span class="sourceLineNo">483</span>        ProxyUsers.authorize(ugi, this.getHostAddress(), this.rpcServer.conf);<a name="line.483"></a>
+<span class="sourceLineNo">345</span>      RpcServer.LOG.trace("Read input token of size={} for processing by saslServer.unwrap()",<a name="line.345"></a>
+<span class="sourceLineNo">346</span>        saslToken.limit());<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      if (!useWrap) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        processOneRpc(saslToken);<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      } else {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        byte[] b = saslToken.hasArray() ? saslToken.array() : saslToken.toBytes();<a name="line.350"></a>
+<span class="sourceLineNo">351</span>        byte [] plaintextData;<a name="line.351"></a>
+<span class="sourceLineNo">352</span>        if (useCryptoAesWrap) {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>          // unwrap with CryptoAES<a name="line.353"></a>
+<span class="sourceLineNo">354</span>          plaintextData = cryptoAES.unwrap(b, 0, b.length);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        } else {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>          plaintextData = saslServer.unwrap(b, 0, b.length);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        }<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        processUnwrappedData(plaintextData);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    } else {<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      byte[] replyToken;<a name="line.361"></a>
+<span class="sourceLineNo">362</span>      try {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        if (saslServer == null) {<a name="line.363"></a>
+<span class="sourceLineNo">364</span>          saslServer =<a name="line.364"></a>
+<span class="sourceLineNo">365</span>              new HBaseSaslRpcServer(authMethod, rpcServer.saslProps, rpcServer.secretManager);<a name="line.365"></a>
+<span class="sourceLineNo">366</span>          RpcServer.LOG.debug("Created SASL server with mechanism={}",<a name="line.366"></a>
+<span class="sourceLineNo">367</span>              authMethod.getMechanismName());<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        }<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        RpcServer.LOG.debug("Read input token of size={} for processing by saslServer." +<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            "evaluateResponse()", saslToken.limit());<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        replyToken = saslServer.evaluateResponse(saslToken.hasArray()?<a name="line.371"></a>
+<span class="sourceLineNo">372</span>            saslToken.array() : saslToken.toBytes());<a name="line.372"></a>
+<span class="sourceLineNo">373</span>      } catch (IOException e) {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        IOException sendToClient = e;<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        Throwable cause = e;<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        while (cause != null) {<a name="line.376"></a>
+<span class="sourceLineNo">377</span>          if (cause instanceof InvalidToken) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>            sendToClient = (InvalidToken) cause;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>            break;<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>          cause = cause.getCause();<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        }<a name="line.382"></a>
+<span class="sourceLineNo">383</span>        doRawSaslReply(SaslStatus.ERROR, null, sendToClient.getClass().getName(),<a name="line.383"></a>
+<span class="sourceLineNo">384</span>          sendToClient.getLocalizedMessage());<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        this.rpcServer.metrics.authenticationFailure();<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        String clientIP = this.toString();<a name="line.386"></a>
+<span class="sourceLineNo">387</span>        // attempting user could be null<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        RpcServer.AUDITLOG<a name="line.388"></a>
+<span class="sourceLineNo">389</span>            .warn(RpcServer.AUTH_FAILED_FOR + clientIP + ":" + saslServer.getAttemptingUser());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        throw e;<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (replyToken != null) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          RpcServer.LOG.debug("Will send token of size " + replyToken.length<a name="line.394"></a>
+<span class="sourceLineNo">395</span>              + " from saslServer.");<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>        doRawSaslReply(SaslStatus.SUCCESS, new BytesWritable(replyToken), null,<a name="line.397"></a>
+<span class="sourceLineNo">398</span>            null);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      if (saslServer.isComplete()) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        String qop = saslServer.getNegotiatedQop();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        useWrap = qop != null &amp;&amp; !"auth".equalsIgnoreCase(qop);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        ugi = getAuthorizedUgi(saslServer.getAuthorizationID());<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        if (RpcServer.LOG.isDebugEnabled()) {<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          RpcServer.LOG.debug("SASL server context established. Authenticated client: " + ugi +<a name="line.405"></a>
+<span class="sourceLineNo">406</span>              ". Negotiated QoP is " + qop);<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        }<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        this.rpcServer.metrics.authenticationSuccess();<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        saslContextEstablished = true;<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      }<a name="line.411"></a>
+<span class="sourceLineNo">412</span>    }<a name="line.412"></a>
+<span class="sourceLineNo">413</span>  }<a name="line.413"></a>
+<span class="sourceLineNo">414</span><a name="line.414"></a>
+<span class="sourceLineNo">415</span>  private void processUnwrappedData(byte[] inBuf) throws IOException, InterruptedException {<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    ReadableByteChannel ch = Channels.newChannel(new ByteArrayInputStream(inBuf));<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // Read all RPCs contained in the inBuf, even partial ones<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    while (true) {<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      int count;<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      if (unwrappedDataLengthBuffer.remaining() &gt; 0) {<a name="line.420"></a>
+<span class="sourceLineNo">421</span>        count = this.rpcServer.channelRead(ch, unwrappedDataLengthBuffer);<a name="line.421"></a>
+<span class="sourceLineNo">422</span>        if (count &lt;= 0 || unwrappedDataLengthBuffer.remaining() &gt; 0)<a name="line.422"></a>
+<span class="sourceLineNo">423</span>          return;<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>      if (unwrappedData == null) {<a name="line.426"></a>
+<span class="sourceLineNo">427</span>        unwrappedDataLengthBuffer.flip();<a name="line.427"></a>
+<span class="sourceLineNo">428</span>        int unwrappedDataLength = unwrappedDataLengthBuffer.getInt();<a name="line.428"></a>
+<span class="sourceLineNo">429</span><a name="line.429"></a>
+<span class="sourceLineNo">430</span>        if (unwrappedDataLength == RpcClient.PING_CALL_ID) {<a name="line.430"></a>
+<span class="sourceLineNo">431</span>          if (RpcServer.LOG.isDebugEnabled())<a name="line.431"></a>
+<span class="sourceLineNo">432</span>            RpcServer.LOG.debug("Received ping message");<a name="line.432"></a>
+<span class="sourceLineNo">433</span>          unwrappedDataLengthBuffer.clear();<a name="line.433"></a>
+<span class="sourceLineNo">434</span>          continue; // ping message<a name="line.434"></a>
+<span class="sourceLineNo">435</span>        }<a name="line.435"></a>
+<span class="sourceLineNo">436</span>        unwrappedData = ByteBuffer.allocate(unwrappedDataLength);<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>      count = this.rpcServer.channelRead(ch, unwrappedData);<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      if (count &lt;= 0 || unwrappedData.remaining() &gt; 0)<a name="line.440"></a>
+<span class="sourceLineNo">441</span>        return;<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>      if (unwrappedData.remaining() == 0) {<a name="line.443"></a>
+<span class="sourceLineNo">444</span>        unwrappedDataLengthBuffer.clear();<a name="line.444"></a>
+<span class="sourceLineNo">445</span>        unwrappedData.flip();<a name="line.445"></a>
+<span class="sourceLineNo">446</span>        processOneRpc(new SingleByteBuff(unwrappedData));<a name="line.446"></a>
+<span class="sourceLineNo">447</span>        unwrappedData = null;<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>  }<a name="line.450"></a>
+<span class="sourceLineNo">451</span><a name="line.451"></a>
+<span class="sourceLineNo">452</span>  public void processOneRpc(ByteBuff buf) throws IOException,<a name="line.452"></a>
+<span class="sourceLineNo">453</span>      InterruptedException {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>    if (connectionHeaderRead) {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>      processRequest(buf);<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    } else {<a name="line.456"></a>
+<span class="sourceLineNo">457</span>      processConnectionHeader(buf);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      this.connectionHeaderRead = true;<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      if (!authorizeConnection()) {<a name="line.459"></a>
+<span class="sourceLineNo">460</span>        // Throw FatalConnectionException wrapping ACE so client does right thing and closes<a name="line.460"></a>
+<span class="sourceLineNo">461</span>        // down the connection instead of trying to read non-existent retun.<a name="line.461"></a>
+<span class="sourceLineNo">462</span>        throw new AccessDeniedException("Connection from " + this + " for service " +<a name="line.462"></a>
+<span class="sourceLineNo">463</span>          connectionHeader.getServiceName() + " is unauthorized for user: " + ugi);<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      }<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      this.user = this.rpcServer.userProvider.create(this.ugi);<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><a name="line.468"></a>
+<span class="sourceLineNo">469</span>  private boolean authorizeConnection() throws IOException {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>    try {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      // If auth method is DIGEST, the token was obtained by the<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      // real user for the effective user, therefore not required to<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      // authorize real user. doAs is allowed only for simple or kerberos<a name="line.473"></a>
+<span class="sourceLineNo">474</span>      // authentication<a name="line.474"></a>
+<span class="sourceLineNo">475</span>      if (ugi != null &amp;&amp; ugi.getRealUser() != null<a name="line.475"></a>
+<span class="sourceLineNo">476</span>          &amp;&amp; (authMethod != AuthMethod.DIGEST)) {<a name="line.476"></a>
+<span class="sourceLineNo">477</span>        ProxyUsers.authorize(ugi, this.getHostAddress(), this.rpcServer.conf);<a name="line.477"></a>
+<span class="sourceLineNo">478</span>      }<a name="line.478"></a>
+<span class="sourceLineNo">479</span>      this.rpcServer.authorize(ugi, connectionHeader, getHostInetAddress());<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      this.rpcServer.metrics.authorizationSuccess();<a name="line.480"></a>
+<span class="sourceLineNo">481</span>    } catch (AuthorizationException ae) {<a name="line.481"></a>
+<span class="sourceLineNo">482</span>      if (RpcServer.LOG.isDebugEnabled()) {<a name="line.482"></a>
+<span class="sourceLineNo">483</span>        RpcServer.LOG.debug("Connection authorization failed: " + ae.getMessage(), ae);<a name="line.483"></a>
 <span class="sourceLineNo">484</span>      }<a name="line.484"></a>
-<span class="sourceLineNo">485</span>      this.rpcServer.authorize(ugi, connectionHeader, getHostInetAddress());<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      this.rpcServer.metrics.authorizationSuccess();<a name="line.486"></a>
-<span class="sourceLineNo">487</span>    } catch (AuthorizationException ae) {<a name="line.487"></a>
-<span class="sourceLineNo">488</span>      if (RpcServer.LOG.isDebugEnabled()) {<a name="line.488"></a>
-<span class="sourceLineNo">489</span>        RpcServer.LOG.debug("Connection authorization failed: " + ae.getMessage(), ae);<a name="line.489"></a>
-<span class="sourceLineNo">490</span>      }<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      this.rpcServer.metrics.authorizationFailure();<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      doRespond(getErrorResponse(ae.getMessage(), new AccessDeniedException(ae)));<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      return false;<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    }<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    return true;<a name="line.495"></a>
-<span class="sourceLineNo">496</span>  }<a name="line.496"></a>
-<span class="sourceLineNo">497</span><a name="line.497"></a>
-<span class="sourceLineNo">498</span>  // Reads the connection header following version<a name="line.498"></a>
-<span class="sourceLineNo">499</span>  private void processConnectionHeader(ByteBuff buf) throws IOException {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>    if (buf.hasArray()) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      this.connectionHeader = ConnectionHeader.parseFrom(buf.array());<a name="line.501"></a>
-<span class="sourceLineNo">502</span>    } else {<a name="line.502"></a>
-<span class="sourceLineNo">503</span>      CodedInputStream cis = UnsafeByteOperations<a name="line.503"></a>
-<span class="sourceLineNo">504</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      cis.enableAliasing(true);<a name="line.505"></a>
-<span class="sourceLineNo">506</span>      this.connectionHeader = ConnectionHeader.parseFrom(cis);<a name="line.506"></a>
-<span class="sourceLineNo">507</span>    }<a name="line.507"></a>
-<span class="sourceLineNo">508</span>    String serviceName = connectionHeader.getServiceName();<a name="line.508"></a>
-<span class="sourceLineNo">509</span>    if (serviceName == null) throw new EmptyServiceNameException();<a name="line.509"></a>
-<span class="sourceLineNo">510</span>    this.service = RpcServer.getService(this.rpcServer.services, serviceName);<a name="line.510"></a>
-<span class="sourceLineNo">511</span>    if (this.service == null) throw new UnknownServiceException(serviceName);<a name="line.511"></a>
-<span class="sourceLineNo">512</span>    setupCellBlockCodecs(this.connectionHeader);<a name="line.512"></a>
-<span class="sourceLineNo">513</span>    RPCProtos.ConnectionHeaderResponse.Builder chrBuilder =<a name="line.513"></a>
-<span class="sourceLineNo">514</span>        RPCProtos.ConnectionHeaderResponse.newBuilder();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>    setupCryptoCipher(this.connectionHeader, chrBuilder);<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    responseConnectionHeader(chrBuilder);<a name="line.516"></a>
-<span class="sourceLineNo">517</span>    UserGroupInformation protocolUser = createUser(connectionHeader);<a name="line.517"></a>
-<span class="sourceLineNo">518</span>    if (!useSasl) {<a name="line.518"></a>
-<span class="sourceLineNo">519</span>      ugi = protocolUser;<a name="line.519"></a>
-<span class="sourceLineNo">520</span>      if (ugi != null) {<a name="line.520"></a>
-<span class="sourceLineNo">521</span>        ugi.setAuthenticationMethod(AuthMethod.SIMPLE.authenticationMethod);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      }<a name="line.522"></a>
-<span class="sourceLineNo">523</span>      // audit logging for SASL authenticated users happens in saslReadAndProcess()<a name="line.523"></a>
-<span class="sourceLineNo">524</span>      if (authenticatedWithFallback) {<a name="line.524"></a>
-<span class="sourceLineNo">525</span>        RpcServer.LOG.warn("Allowed fallback to SIMPLE auth for " + ugi<a name="line.525"></a>
-<span class="sourceLineNo">526</span>            + " connecting from " + getHostAddress());<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      }<a name="line.527"></a>
-<span class="sourceLineNo">528</span>      RpcServer.AUDITLOG.info(RpcServer.AUTH_SUCCESSFUL_FOR + ugi);<a name="line.528"></a>
-<span class="sourceLineNo">529</span>    } else {<a name="line.529"></a>
-<span class="sourceLineNo">530</span>      // user is authenticated<a name="line.530"></a>
-<span class="sourceLineNo">531</span>      ugi.setAuthenticationMethod(authMethod.authenticationMethod);<a name="line.531"></a>
-<span class="sourceLineNo">532</span>      //Now we check if this is a proxy user case. If the protocol user is<a name="line.532"></a>
-<span class="sourceLineNo">533</span>      //different from the 'user', it is a proxy user scenario. However,<a name="line.533"></a>
-<span class="sourceLineNo">534</span>      //this is not allowed if user authenticated with DIGEST.<a name="line.534"></a>
-<span class="sourceLineNo">535</span>      if ((protocolUser != null)<a name="line.535"></a>
-<span class="sourceLineNo">536</span>          &amp;&amp; (!protocolUser.getUserName().equals(ugi.getUserName()))) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>        if (authMethod == AuthMethod.DIGEST) {<a name="line.537"></a>
-<span class="sourceLineNo">538</span>          // Not allowed to doAs if token authentication is used<a name="line.538"></a>
-<span class="sourceLineNo">539</span>          throw new AccessDeniedException("Authenticated user (" + ugi<a name="line.539"></a>
-<span class="sourceLineNo">540</span>              + ") doesn't match what the client claims to be ("<a name="line.540"></a>
-<span class="sourceLineNo">541</span>              + protocolUser + ")");<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        } else {<a name="line.542"></a>
-<span class="sourceLineNo">543</span>          // Effective user can be different from authenticated user<a name="line.543"></a>
-<span class="sourceLineNo">544</span>          // for simple auth or kerberos auth<a name="line.544"></a>
-<span class="sourceLineNo">545</span>          // The user is the real user. Now we create a proxy user<a name="line.545"></a>
-<span class="sourceLineNo">546</span>          UserGroupInformation realUser = ugi;<a name="line.546"></a>
-<span class="sourceLineNo">547</span>          ugi = UserGroupInformation.createProxyUser(protocolUser<a name="line.547"></a>
-<span class="sourceLineNo">548</span>              .getUserName(), realUser);<a name="line.548"></a>
-<span class="sourceLineNo">549</span>          // Now the user is a proxy user, set Authentication method Proxy.<a name="line.549"></a>
-<span class="sourceLineNo">550</span>          ugi.setAuthenticationMethod(AuthenticationMethod.PROXY);<a name="line.550"></a>
-<span class="sourceLineNo">551</span>        }<a name="line.551"></a>
-<span class="sourceLineNo">552</span>      }<a name="line.552"></a>
-<span class="sourceLineNo">553</span>    }<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    if (connectionHeader.hasVersionInfo()) {<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      // see if this connection will support RetryImmediatelyException<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      retryImmediatelySupported = VersionInfoUtil.hasMinimumVersion(getVersionInfo(), 1, 2);<a name="line.556"></a>
-<span class="sourceLineNo">557</span><a name="line.557"></a>
-<span class="sourceLineNo">558</span>      RpcServer.AUDITLOG.info("Connection from " + this.hostAddress + " port: " + this.remotePort<a name="line.558"></a>
-<span class="sourceLineNo">559</span>          + " with version info: "<a name="line.559"></a>
-<span class="sourceLineNo">560</span>          + TextFormat.shortDebugString(connectionHeader.getVersionInfo()));<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    } else {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      RpcServer.AUDITLOG.info("Connection from " + this.hostAddress + " port: " + this.remotePort<a name="line.562"></a>
-<span class="sourceLineNo">563</span>          + " with unknown version info");<a name="line.563"></a>
-<span class="sourceLineNo">564</span>    }<a name="line.564"></a>
-<span class="sourceLineNo">565</span>  }<a name="line.565"></a>
-<span class="sourceLineNo">566</span><a name="line.566"></a>
-<span class="sourceLineNo">567</span>  /**<a name="line.567"></a>
-<span class="sourceLineNo">568</span>   * Send the response for connection header<a name="line.568"></a>
-<span class="sourceLineNo">569</span>   */<a name="line.569"></a>
-<span class="sourceLineNo">570</span>  private void responseConnectionHeader(RPCProtos.ConnectionHeaderResponse.Builder chrBuilder)<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      throws FatalConnectionException {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>    // Response the connection header if Crypto AES is enabled<a name="line.572"></a>
-<span class="sourceLineNo">573</span>    if (!chrBuilder.hasCryptoCipherMeta()) return;<a name="line.573"></a>
-<span class="sourceLineNo">574</span>    try {<a name="line.574"></a>
-<span class="sourceLineNo">575</span>      byte[] connectionHeaderResBytes = chrBuilder.build().toByteArray();<a name="line.575"></a>
-<span class="sourceLineNo">576</span>      // encrypt the Crypto AES cipher meta data with sasl server, and send to client<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      byte[] unwrapped = new byte[connectionHeaderResBytes.length + 4];<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      Bytes.putBytes(unwrapped, 0, Bytes.toBytes(connectionHeaderResBytes.length), 0, 4);<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      Bytes.putBytes(unwrapped, 4, connectionHeaderResBytes, 0, connectionHeaderResBytes.length);<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      byte[] wrapped = saslServer.wrap(unwrapped, 0, unwrapped.length);<a name="line.580"></a>
-<span class="sourceLineNo">581</span>      BufferChain bc;<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      try (ByteBufferOutputStream response = new ByteBufferOutputStream(wrapped.length + 4);<a name="line.582"></a>
-<span class="sourceLineNo">583</span>          DataOutputStream out = new DataOutputStream(response)) {<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        out.writeInt(wrapped.length);<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        out.write(wrapped);<a name="line.585"></a>
-<span class="sourceLineNo">586</span>        bc = new BufferChain(response.getByteBuffer());<a name="line.586"></a>
-<span class="sourceLineNo">587</span>      }<a name="line.587"></a>
-<span class="sourceLineNo">588</span>      doRespond(() -&gt; bc);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>    } catch (IOException ex) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>      throw new UnsupportedCryptoException(ex.getMessage(), ex);<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><a name="line.593"></a>
-<span class="sourceLineNo">594</span>  protected abstract void doRespond(RpcResponse resp) throws IOException;<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>   * @param buf<a name="line.597"></a>
-<span class="sourceLineNo">598</span>   *          Has the request header and the request param and optionally<a name="line.598"></a>
-<span class="sourceLineNo">599</span>   *          encoded data buffer all in this one array.<a name="line.599"></a>
-<span class="sourceLineNo">600</span>   * @throws IOException<a name="line.600"></a>
-<span class="sourceLineNo">601</span>   * @throws InterruptedException<a name="line.601"></a>
-<span class="sourceLineNo">602</span>   */<a name="line.602"></a>
-<span class="sourceLineNo">603</span>  protected void processRequest(ByteBuff buf) throws IOException,<a name="line.603"></a>
-<span class="sourceLineNo">604</span>      InterruptedException {<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    long totalRequestSize = buf.limit();<a name="line.605"></a>
-<span class="sourceLineNo">606</span>    int offset = 0;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    // Here we read in the header. We avoid having pb<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    // do its default 4k allocation for CodedInputStream. We force it to use<a name="line.608"></a>
-<span class="sourceLineNo">609</span>    // backing array.<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    CodedInputStream cis;<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    if (buf.hasArray()) {<a name="line.611"></a>
-<span class="sourceLineNo">612</span>      cis = UnsafeByteOperations.unsafeWrap(buf.array(), 0, buf.limit()).newCodedInput();<a name="line.612"></a>
-<span class="sourceLineNo">613</span>    } else {<a name="line.613"></a>
-<span class="sourceLineNo">614</span>      cis = UnsafeByteOperations<a name="line.614"></a>
-<span class="sourceLineNo">615</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.615"></a>
-<span class="sourceLineNo">616</span>    }<a name="line.616"></a>
-<span class="sourceLineNo">617</span>    cis.enableAliasing(true);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>    int headerSize = cis.readRawVarint32();<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    offset = cis.getTotalBytesRead();<a name="line.619"></a>
-<span class="sourceLineNo">620</span>    Message.Builder builder = RequestHeader.newBuilder();<a name="line.620"></a>
-<span class="sourceLineNo">621</span>    ProtobufUtil.mergeFrom(builder, cis, headerSize);<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    RequestHeader header = (RequestHeader) builder.build();<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    offset += headerSize;<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    int id = header.getCallId();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    if (RpcServer.LOG.isTraceEnabled()) {<a name="line.625"></a>
-<span class="sourceLineNo">626</span>      RpcServer.LOG.trace("RequestHeader " + TextFormat.shortDebugString(header)<a name="line.626"></a>
-<span class="sourceLineNo">627</span>          + " totalRequestSize: " + totalRequestSize + " bytes");<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    }<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    // Enforcing the call queue size, this triggers a retry in the client<a name="line.629"></a>
-<span class="sourceLineNo">630</span>    // This is a bit late to be doing this check - we have already read in the<a name="line.630"></a>
-<span class="sourceLineNo">631</span>    // total request.<a name="line.631"></a>
-<span class="sourceLineNo">632</span>    if ((totalRequestSize +<a name="line.632"></a>
-<span class="sourceLineNo">633</span>        this.rpcServer.callQueueSizeInBytes.sum()) &gt; this.rpcServer.maxQueueSizeInBytes) {<a name="line.633"></a>
-<span class="sourceLineNo">634</span>      final ServerCall&lt;?&gt; callTooBig = createCall(id, this.service, null, null, null, null,<a name="line.634"></a>
-<span class="sourceLineNo">635</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.636"></a>
-<span class="sourceLineNo">637</span>      callTooBig.setResponse(null, null,  RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.637"></a>
-<span class="sourceLineNo">638</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.638"></a>
-<span class="sourceLineNo">639</span>        ", is hbase.ipc.server.max.callqueue.size too small?");<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      callTooBig.sendResponseIfReady();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>      return;<a name="line.641"></a>
-<span class="sourceLineNo">642</span>    }<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    MethodDescriptor md = null;<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    Message param = null;<a name="line.644"></a>
-<span class="sourceLineNo">645</span>    CellScanner cellScanner = null;<a name="line.645"></a>
-<span class="sourceLineNo">646</span>    try {<a name="line.646"></a>
-<span class="sourceLineNo">647</span>      if (header.hasRequestParam() &amp;&amp; header.getRequestParam()) {<a name="line.647"></a>
-<span class="sourceLineNo">648</span>        md = this.service.getDescriptorForType().findMethodByName(<a name="line.648"></a>
-<span class="sourceLineNo">649</span>            header.getMethodName());<a name="line.649"></a>
-<span class="sourceLineNo">650</span>        if (md == null)<a name="line.650"></a>
-<span class="sourceLineNo">651</span>          throw new UnsupportedOperationException(header.getMethodName());<a name="line.651"></a>
-<span class="sourceLineNo">652</span>        builder = this.service.getRequestPrototype(md).newBuilderForType();<a name="line.652"></a>
-<span class="sourceLineNo">653</span>        cis.resetSizeCounter();<a name="line.653"></a>
-<span class="sourceLineNo">654</span>        int paramSize = cis.readRawVarint32();<a name="line.654"></a>
-<span class="sourceLineNo">655</span>        offset += cis.getTotalBytesRead();<a name="line.655"></a>
-<span class="sourceLineNo">656</span>        if (builder != null) {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>          ProtobufUtil.mergeFrom(builder, cis, paramSize);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>          param = builder.build();<a name="line.658"></a>
-<span class="sourceLineNo">659</span>        }<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        offset += paramSize;<a name="line.660"></a>
-<span class="sourceLineNo">661</span>      } else {<a name="line.661"></a>
-<span class="sourceLineNo">662</span>        // currently header must have request param, so we directly throw<a name="line.662"></a>
-<span class="sourceLineNo">663</span>        // exception here<a name="line.663"></a>
-<span class="sourceLineNo">664</span>        String msg = "Invalid request header: "<a name="line.664"></a>
-<span class="sourceLineNo">665</span>            + TextFormat.shortDebugString(header)<a name="line.665"></a>
-<span class="sourceLineNo">666</span>            + ", should have param set in it";<a name="line.666"></a>
-<span class="sourceLineNo">667</span>        RpcServer.LOG.warn(msg);<a name="line.667"></a>
-<span class="sourceLineNo">668</span>        throw new DoNotRetryIOException(msg);<a name="line.668"></a>
+<span class="sourceLineNo">485</span>      this.rpcServer.metrics.authorizationFailure();<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      doRespond(getErrorResponse(ae.getMessage(), new AccessDeniedException(ae)));<a name="line.486"></a>
+<span class="sourceLineNo">487</span>      return false;<a name="line.487"></a>
+<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
+<span class="sourceLineNo">489</span>    return true;<a name="line.489"></a>
+<span class="sourceLineNo">490</span>  }<a name="line.490"></a>
+<span class="sourceLineNo">491</span><a name="line.491"></a>
+<span class="sourceLineNo">492</span>  // Reads the connection header following version<a name="line.492"></a>
+<span class="sourceLineNo">493</span>  private void processConnectionHeader(ByteBuff buf) throws IOException {<a name="line.493"></a>
+<span class="sourceLineNo">494</span>    if (buf.hasArray()) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>      this.connectionHeader = ConnectionHeader.parseFrom(buf.array());<a name="line.495"></a>
+<span class="sourceLineNo">496</span>    } else {<a name="line.496"></a>
+<span class="sourceLineNo">497</span>      CodedInputStream cis = UnsafeByteOperations.unsafeWrap(<a name="line.497"></a>
+<span class="sourceLineNo">498</span>          new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      cis.enableAliasing(true);<a name="line.499"></a>
+<span class="sourceLineNo">500</span>      this.connectionHeader = ConnectionHeader.parseFrom(cis);<a name="line.500"></a>
+<span class="sourceLineNo">501</span>    }<a name="line.501"></a>
+<span class="sourceLineNo">502</span>    String serviceName = connectionHeader.getServiceName();<a name="line.502"></a>
+<span class="sourceLineNo">503</span>    if (serviceName == null) throw new EmptyServiceNameException();<a name="line.503"></a>
+<span class="sourceLineNo">504</span>    this.service = RpcServer.getService(this.rpcServer.services, serviceName);<a name="line.504"></a>
+<span class="sourceLineNo">505</span>    if (this.service == null) throw new UnknownServiceException(serviceName);<a name="line.505"></a>
+<span class="sourceLineNo">506</span>    setupCellBlockCodecs(this.connectionHeader);<a name="line.506"></a>
+<span class="sourceLineNo">507</span>    RPCProtos.ConnectionHeaderResponse.Builder chrBuilder =<a name="line.507"></a>
+<span class="sourceLineNo">508</span>        RPCProtos.ConnectionHeaderResponse.newBuilder();<a name="line.508"></a>
+<span class="sourceLineNo">509</span>    setupCryptoCipher(this.connectionHeader, chrBuilder);<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    responseConnectionHeader(chrBuilder);<a name="line.510"></a>
+<span class="sourceLineNo">511</span>    UserGroupInformation protocolUser = createUser(connectionHeader);<a name="line.511"></a>
+<span class="sourceLineNo">512</span>    if (!useSasl) {<a name="line.512"></a>
+<span class="sourceLineNo">513</span>      ugi = protocolUser;<a name="line.513"></a>
+<span class="sourceLineNo">514</span>      if (ugi != null) {<a name="line.514"></a>
+<span class="sourceLineNo">515</span>        ugi.setAuthenticationMethod(AuthMethod.SIMPLE.authenticationMethod);<a name="line.515"></a>
+<span class="sourceLineNo">516</span>      }<a name="line.516"></a>
+<span class="sourceLineNo">517</span>      // audit logging for SASL authenticated users happens in saslReadAndProcess()<a name="line.517"></a>
+<span class="sourceLineNo">518</span>      if (authenticatedWithFallback) {<a name="line.518"></a>
+<span class="sourceLineNo">519</span>        RpcServer.LOG.warn("Allowed fallback to SIMPLE auth for {} connecting from {}",<a name="line.519"></a>
+<span class="sourceLineNo">520</span>            ugi, getHostAddress());<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      }<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    } else {<a name="line.522"></a>
+<span class="sourceLineNo">523</span>      // user is authenticated<a name="line.523"></a>
+<span class="sourceLineNo">524</span>      ugi.setAuthenticationMethod(authMethod.authenticationMethod);<a name="line.524"></a>
+<span class="sourceLineNo">525</span>      //Now we check if this is a proxy user case. If the protocol user is<a name="line.525"></a>
+<span class="sourceLineNo">526</span>      //different from the 'user', it is a proxy user scenario. However,<a name="line.526"></a>
+<span class="sourceLineNo">527</span>      //this is not allowed if user authenticated with DIGEST.<a name="line.527"></a>
+<span class="sourceLineNo">528</span>      if ((protocolUser != null)<a name="line.528"></a>
+<span class="sourceLineNo">529</span>          &amp;&amp; (!protocolUser.getUserName().equals(ugi.getUserName()))) {<a name="line.529"></a>
+<span class="sourceLineNo">530</span>        if (authMethod == AuthMethod.DIGEST) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>          // Not allowed to doAs if token authentication is used<a name="line.531"></a>
+<span class="sourceLineNo">532</span>          throw new AccessDeniedException("Authenticated user (" + ugi<a name="line.532"></a>
+<span class="sourceLineNo">533</span>              + ") doesn't match what the client claims to be ("<a name="line.533"></a>
+<span class="sourceLineNo">534</span>              + protocolUser + ")");<a name="line.534"></a>
+<span class="sourceLineNo">535</span>        } else {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>          // Effective user can be different from authenticated user<a name="line.536"></a>
+<span class="sourceLineNo">537</span>          // for simple auth or kerberos auth<a name="line.537"></a>
+<span class="sourceLineNo">538</span>          // The user is the real user. Now we create a proxy user<a name="line.538"></a>
+<span class="sourceLineNo">539</span>          UserGroupInformation realUser = ugi;<a name="line.539"></a>
+<span class="sourceLineNo">540</span>          ugi = UserGroupInformation.createProxyUser(protocolUser<a name="line.540"></a>
+<span class="sourceLineNo">541</span>              .getUserName(), realUser);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>          // Now the user is a proxy user, set Authentication method Proxy.<a name="line.542"></a>
+<span class="sourceLineNo">543</span>          ugi.setAuthenticationMethod(AuthenticationMethod.PROXY);<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        }<a name="line.544"></a>
+<span class="sourceLineNo">545</span>      }<a name="line.545"></a>
+<span class="sourceLineNo">546</span>    }<a name="line.546"></a>
+<span class="sourceLineNo">547</span>    String version;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>    if (this.connectionHeader.hasVersionInfo()) {<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      // see if this connection will support RetryImmediatelyException<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      this.retryImmediatelySupported =<a name="line.550"></a>
+<span class="sourceLineNo">551</span>          VersionInfoUtil.hasMinimumVersion(getVersionInfo(), 1, 2);<a name="line.551"></a>
+<span class="sourceLineNo">552</span>      version = this.connectionHeader.getVersionInfo().getVersion();<a name="line.552"></a>
+<span class="sourceLineNo">553</span>    } else {<a name="line.553"></a>
+<span class="sourceLineNo">554</span>      version = "UNKNOWN";<a name="line.554"></a>
+<span class="sourceLineNo">555</span>    }<a name="line.555"></a>
+<span class="sourceLineNo">556</span>    RpcServer.AUDITLOG.info("Connection from {}:{}, version={}, sasl={}, ugi={}, service={}",<a name="line.556"></a>
+<span class="sourceLineNo">557</span>        this.hostAddress, this.remotePort, version, this.useSasl, this.ugi, serviceName);<a name="line.557"></a>
+<span class="sourceLineNo">558</span>  }<a name="line.558"></a>
+<span class="sourceLineNo">559</span><a name="line.559"></a>
+<span class="sourceLineNo">560</span>  /**<a name="line.560"></a>
+<span class="sourceLineNo">561</span>   * Send the response for connection header<a name="line.561"></a>
+<span class="sourceLineNo">562</span>   */<a name="line.562"></a>
+<span class="sourceLineNo">563</span>  private void responseConnectionHeader(RPCProtos.ConnectionHeaderResponse.Builder chrBuilder)<a name="line.563"></a>
+<span class="sourceLineNo">564</span>      throws FatalConnectionException {<a name="line.564"></a>
+<span class="sourceLineNo">565</span>    // Response the connection header if Crypto AES is enabled<a name="line.565"></a>
+<span class="sourceLineNo">566</span>    if (!chrBuilder.hasCryptoCipherMeta()) return;<a name="line.566"></a>
+<span class="sourceLineNo">567</span>    try {<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      byte[] connectionHeaderResBytes = chrBuilder.build().toByteArray();<a name="line.568"></a>
+<span class="sourceLineNo">569</span>      // encrypt the Crypto AES cipher meta data with sasl server, and send to client<a name="line.569"></a>
+<span class="sourceLineNo">570</span>      byte[] unwrapped = new byte[connectionHeaderResBytes.length + 4];<a name="line.570"></a>
+<span class="sourceLineNo">571</span>      Bytes.putBytes(unwrapped, 0, Bytes.toBytes(connectionHeaderResBytes.length), 0, 4);<a name="line.571"></a>
+<span class="sourceLineNo">572</span>      Bytes.putBytes(unwrapped, 4, connectionHeaderResBytes, 0, connectionHeaderResBytes.length);<a name="line.572"></a>
+<span class="sourceLineNo">573</span>      byte[] wrapped = saslServer.wrap(unwrapped, 0, unwrapped.length);<a name="line.573"></a>
+<span class="sourceLineNo">574</span>      BufferChain bc;<a name="line.574"></a>
+<span class="sourceLineNo">575</span>      try (ByteBufferOutputStream response = new ByteBufferOutputStream(wrapped.length + 4);<a name="line.575"></a>
+<span class="sourceLineNo">576</span>          DataOutputStream out = new DataOutputStream(response)) {<a name="line.576"></a>
+<span class="sourceLineNo">577</span>        out.writeInt(wrapped.length);<a name="line.577"></a>
+<span class="sourceLineNo">578</span>        out.write(wrapped);<a name="line.578"></a>
+<span class="sourceLineNo">579</span>        bc = new BufferChain(response.getByteBuffer());<a name="line.579"></a>
+<span class="sourceLineNo">580</span>      }<a name="line.580"></a>
+<span class="sourceLineNo">581</span>      doRespond(() -&gt; bc);<a name="line.581"></a>
+<span class="sourceLineNo">582</span>    } catch (IOException ex) {<a name="line.582"></a>
+<span class="sourceLineNo">583</span>      throw new UnsupportedCryptoException(ex.getMessage(), ex);<a name="line.583"></a>
+<span class="sourceLineNo">584</span>    }<a name="line.584"></a>
+<span class="sourceLineNo">585</span>  }<a name="line.585"></a>
+<span class="sourceLineNo">586</span><a name="line.586"></a>
+<span class="sourceLineNo">587</span>  protected abstract void doRespond(RpcResponse resp) throws IOException;<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>   * @param buf<a name="line.590"></a>
+<span class="sourceLineNo">591</span>   *          Has the request header and the request param and optionally<a name="line.591"></a>
+<span class="sourceLineNo">592</span>   *          encoded data buffer all in this one array.<a name="line.592"></a>
+<span class="sourceLineNo">593</span>   * @throws IOException<a name="line.593"></a>
+<span class="sourceLineNo">594</span>   * @throws InterruptedException<a name="line.594"></a>
+<span class="sourceLineNo">595</span>   */<a name="line.595"></a>
+<span class="sourceLineNo">596</span>  protected void processRequest(ByteBuff buf) throws IOException,<a name="line.596"></a>
+<span class="sourceLineNo">597</span>      InterruptedException {<a name="line.597"></a>
+<span class="sourceLineNo">598</span>    long totalRequestSize = buf.limit();<a name="line.598"></a>
+<span class="sourceLineNo">599</span>    int offset = 0;<a name="line.599"></a>
+<span class="sourceLineNo">600</span>    // Here we read in the header. We avoid having pb<a name="line.600"></a>
+<span class="sourceLineNo">601</span>    // do its default 4k allocation for CodedInputStream. We force it to use<a name="line.601"></a>
+<span class="sourceLineNo">602</span>    // backing array.<a name="line.602"></a>
+<span class="sourceLineNo">603</span>    CodedInputStream cis;<a name="line.603"></a>
+<span class="sourceLineNo">604</span>    if (buf.hasArray()) {<a name="line.604"></a>
+<span class="sourceLineNo">605</span>      cis = UnsafeByteOperations.unsafeWrap(buf.array(), 0, buf.limit()).newCodedInput();<a name="line.605"></a>
+<span class="sourceLineNo">606</span>    } else {<a name="line.606"></a>
+<span class="sourceLineNo">607</span>      cis = UnsafeByteOperations<a name="line.607"></a>
+<span class="sourceLineNo">608</span>          .unsafeWrap(new ByteBuffByteInput(buf, 0, buf.limit()), 0, buf.limit()).newCodedInput();<a name="line.608"></a>
+<span class="sourceLineNo">609</span>    }<a name="line.609"></a>
+<span class="sourceLineNo">610</span>    cis.enableAliasing(true);<a name="line.610"></a>
+<span class="sourceLineNo">611</span>    int headerSize = cis.readRawVarint32();<a name="line.611"></a>
+<span class="sourceLineNo">612</span>    offset = cis.getTotalBytesRead();<a name="line.612"></a>
+<span class="sourceLineNo">613</span>    Message.Builder builder = RequestHeader.newBuilder();<a name="line.613"></a>
+<span class="sourceLineNo">614</span>    ProtobufUtil.mergeFrom(builder, cis, headerSize);<a name="line.614"></a>
+<span class="sourceLineNo">615</span>    RequestHeader header = (RequestHeader) builder.build();<a name="line.615"></a>
+<span class="sourceLineNo">616</span>    offset += headerSize;<a name="line.616"></a>
+<span class="sourceLineNo">617</span>    int id = header.getCallId();<a name="line.617"></a>
+<span class="sourceLineNo">618</span>    if (RpcServer.LOG.isTraceEnabled()) {<a name="line.618"></a>
+<span class="sourceLineNo">619</span>      RpcServer.LOG.trace("RequestHeader " + TextFormat.shortDebugString(header)<a name="line.619"></a>
+<span class="sourceLineNo">620</span>          + " totalRequestSize: " + totalRequestSize + " bytes");<a name="line.620"></a>
+<span class="sourceLineNo">621</span>    }<a name="line.621"></a>
+<span class="sourceLineNo">622</span>    // Enforcing the call queue size, this triggers a retry in the client<a name="line.622"></a>
+<span class="sourceLineNo">623</span>    // This is a bit late to be doing this check - we have already read in the<a name="line.623"></a>
+<span class="sourceLineNo">624</span>    // total request.<a name="line.624"></a>
+<span class="sourceLineNo">625</span>    if ((totalRequestSize +<a name="line.625"></a>
+<span class="sourceLineNo">626</span>        this.rpcServer.callQueueSizeInBytes.sum()) &gt; this.rpcServer.maxQueueSizeInBytes) {<a name="line.626"></a>
+<span class="sourceLineNo">627</span>      final ServerCall&lt;?&gt; callTooBig = createCall(id, this.service, null, null, null, null,<a name="line.627"></a>
+<span class="sourceLineNo">628</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.628"></a>
+<span class="sourceLineNo">629</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.629"></a>
+<span class="sourceLineNo">630</span>      callTooBig.setResponse(null, null,  RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.630"></a>
+<span class="sourceLineNo">631</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.631"></a>
+<span class="sourceLineNo">632</span>        ", is hbase.ipc.server.max.callqueue.size too small?");<a name="line.632"></a>
+<span class="sourceLineNo">633</span>      callTooBig.sendResponseIfReady();<a name="line.633"></a>
+<span class="sourceLineNo">634</span>      return;<a name="line.634"></a>
+<span class="sourceLineNo">635</span>    }<a name="line.635"></a>
+<span class="sourceLineNo">636</span>    MethodDescriptor md = null;<a name="line.636"></a>
+<span class="sourceLineNo">637</span>    Message param = null;<a name="line.637"></a>
+<span class="sourceLineNo">638</span>    CellScanner cellScanner = null;<a name="line.638"></a>
+<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
+<span class="sourceLineNo">640</span>      if (header.hasRequestParam() &amp;&amp; header.getRequestParam()) {<a name="line.640"></a>
+<span class="sourceLineNo">641</span>        md = this.service.getDescriptorForType().findMethodByName(<a name="line.641"></a>
+<span class="sourceLineNo">642</span>            header.getMethodName());<a name="line.642"></a>
+<span class="sourceLineNo">643</span>        if (md == null)<a name="line.643"></a>
+<span class="sourceLineNo">644</span>          throw new UnsupportedOperationException(header.getMethodName());<a name="line.644"></a>
+<span class="sourceLineNo">645</span>        builder = this.service.getRequestPrototype(md).newBuilderForType();<a name="line.645"></a>
+<span class="sourceLineNo">646</span>        cis.resetSizeCounter();<a name="line.646"></a>
+<span class="sourceLineNo">647</span>        int paramSize = cis.readRawVarint32();<a name="line.647"></a>
+<span class="sourceLineNo">648</span>        offset += cis.getTotalBytesRead();<a name="line.648"></a>
+<span class="sourceLineNo">649</span>        if (builder != null) {<a name="line.649"></a>
+<span class="sourceLineNo">650</span>          ProtobufUtil.mergeFrom(builder, cis, paramSize);<a name="line.650"></a>
+<span class="sourceLineNo">651</span>          param = builder.build();<a name="line.651"></a>
+<span class="sourceLineNo">652</span>        }<a name="line.652"></a>
+<span class="sourceLineNo">653</span>        offset += paramSize;<a name="line.653"></a>
+<span class="sourceLineNo">654</span>      } else {<a name="line.654"></a>
+<span class="sourceLineNo">655</span>        // currently header must have request param, so we directly throw<a name="line.655"></a>
+<span class="sourceLineNo">656</span>        // exception here<a name="line.656"></a>
+<span class="sourceLineNo">657</span>        String msg = "Invalid request header: "<a name="line.657"></a>
+<span class="sourceLineNo">658</span>            + TextFormat.shortDebugString(header)<a name="line.658"></a>
+<span class="sourceLineNo">659</span>            + ", should have param set in it";<a name="line.659"></a>
+<span class="sourceLineNo">660</span>        RpcServer.LOG.warn(msg);<a name="line.660"></a>
+<span class="sourceLineNo">661</span>        throw new DoNotRetryIOException(msg);<a name="line.661"></a>
+<span class="sourceLineNo">662</span>      }<a name="line.662"></a>
+<span class="sourceLineNo">663</span>      if (header.hasCellBlockMeta()) {<a name="line.663"></a>
+<span class="sourceLineNo">664</span>        buf.position(offset);<a name="line.664"></a>
+<span class="sourceLineNo">665</span>        ByteBuff dup = buf.duplicate();<a name="line.665"></a>
+<span class="sourceLineNo">666</span>        dup.limit(offset + header.getCellBlockMeta().getLength());<a name="line.666"></a>
+<span class="sourceLineNo">667</span>        cellScanner = this.rpcServer.cellBlockBuilder.createCellScannerReusingBuffers(<a name="line.667"></a>
+<span class="sourceLineNo">668</span>            this.codec, this.compressionCodec, dup);<a name="line.668"></a>
 <span class="sourceLineNo">669</span>      }<a name="line.669"></a>
-<span class="sourceLineNo">670</span>      if (header.hasCellBlockMeta()) {<a name="line.670"></a>
-<span class="sourceLineNo">671</span>        buf.position(offset);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>        ByteBuff dup = buf.duplicate();<a name="line.672"></a>
-<span class="sourceLineNo">673</span>        dup.limit(offset + header.getCellBlockMeta().getLength());<a name="line.673"></a>
-<span class="sourceLineNo">674</span>        cellScanner = this.rpcServer.cellBlockBuilder.createCellScannerReusingBuffers(<a name="line.674"></a>
-<span class="sourceLineNo">675</span>            this.codec, this.compressionCodec, dup);<a name="line.675"></a>
-<span class="sourceLineNo">676</span>      }<a name="line.676"></a>
-<span class="sourceLineNo">677</span>    } catch (Throwable t) {<a name="line.677"></a>
-<span class="sourceLineNo">678</span>      InetSocketAddress address = this.rpcServer.getListenerAddress();<a name="line.678"></a>
-<span class="sourceLineNo">679</span>      String msg = (address != null ? address : "(channel closed)")<a name="line.679"></a>
-<span class="sourceLineNo">680</span>          + " is unable to read call parameter from client "<a name="line.680"></a>
-<span class="sourceLineNo">681</span>          + getHostAddress();<a name="line.681"></a>
-<span class="sourceLineNo">682</span>      RpcServer.LOG.warn(msg, t);<a name="line.682"></a>
-<span class="sourceLineNo">683</span><a name="line.683"></a>
-<span class="sourceLineNo">684</span>      this.rpcServer.metrics.exception(t);<a name="line.684"></a>
-<span class="sourceLineNo">685</span><a name="line.685"></a>
-<span class="sourceLineNo">686</span>      // probably the hbase hadoop version does not match the running hadoop<a name="line.686"></a>
-<span class="sourceLineNo">687</span>      // version<a name="line.687"></a>
-<span class="sourceLineNo">688</span>      if (t instanceof LinkageError) {<a name="line.688"></a>
-<span class="sourceLineNo">689</span>        t = new DoNotRetryIOException(t);<a name="line.689"></a>
-<span class="sourceLineNo">690</span>      }<a name="line.690"></a>
-<span class="sourceLineNo">691</span>      // If the method is not present on the server, do not retry.<a name="line.691"></a>
-<span class="sourceLineNo">692</span>      if (t instanceof UnsupportedOperationException) {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>        t = new DoNotRetryIOException(t);<a name="line.693"></a>
-<span class="sourceLineNo">694</span>      }<a name="line.694"></a>
+<span class="sourceLineNo">670</span>    } catch (Throwable t) {<a name="line.670"></a>
+<span class="sourceLineNo">671</span>      InetSocketAddress address = this.rpcServer.getListenerAddress();<a name="line.671"></a>
+<span class="sourceLineNo">672</span>      String msg = (address != null ? address : "(channel closed)")<a name="line.672"></a>
+<span class="sourceLineNo">673</span>          + " is unable to read call parameter from client "<a name="line.673"></a>
+<span class="sourceLineNo">674</span>          + getHostAddress();<a name="line.674"></a>
+<span class="sourceLineNo">675</span>      RpcServer.LOG.warn(msg, t);<a name="line.675"></a>
+<span class="sourceLineNo">676</span><a name="line.676"></a>
+<span class="sourceLineNo">677</span>      this.rpcServer.metrics.exception(t);<a name="line.677"></a>
+<span class="sourceLineNo">678</span><a name="line.678"></a>
+<span class="sourceLineNo">679</span>      // probably the hbase hadoop version does not match the running hadoop<a name="line.679"></a>
+<span class="sourceLineNo">680</span>      // version<a name="line.680"></a>
+<span class="sourceLineNo">681</span>      if (t instanceof LinkageError) {<a name="line.681"></a>
+<span class="sourceLineNo">682</span>        t = new DoNotRetryIOException(t);<a name="line.682"></a>
+<span class="sourceLineNo">683</span>      }<a name="line.683"></a>
+<span class="sourceLineNo">684</span>      // If the method is not present on the server, do not retry.<a name="line.684"></a>
+<span class="sourceLineNo">685</span>      if (t instanceof UnsupportedOperationException) {<a name="line.685"></a>
+<span class="sourceLineNo">686</span>        t = new DoNotRetryIOException(t);<a name="line.686"></a>
+<span class="sourceLineNo">687</span>      }<a name="line.687"></a>
+<span class="sourceLineNo">688</span><a name="line.688"></a>
+<span class="sourceLineNo">689</span>      ServerCall&lt;?&gt; readParamsFailedCall = createCall(id, this.service, null, null, null, null,<a name="line.689"></a>
+<span class="sourceLineNo">690</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.690"></a>
+<span class="sourceLineNo">691</span>      readParamsFailedCall.setResponse(null, null, t, msg + "; " + t.getMessage());<a name="line.691"></a>
+<span class="sourceLineNo">692</span>      readParamsFailedCall.sendResponseIfReady();<a name="line.692"></a>
+<span class="sourceLineNo">693</span>      return;<a name="line.693"></a>
+<span class="sourceLineNo">694</span>    }<a name="line.694"></a>
 <span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>      ServerCall&lt;?&gt; readParamsFailedCall = createCall(id, this.service, null, null, null, null,<a name="line.696"></a>
-<span class="sourceLineNo">697</span>        totalRequestSize, null, 0, this.callCleanup);<a name="line.697"></a>
-<span class="sourceLineNo">698</span>      readParamsFailedCall.setResponse(null, null, t, msg + "; " + t.getMessage());<a name="line.698"></a>
-<span class="sourceLineNo">699</span>      readParamsFailedCall.sendResponseIfReady();<a name="line.699"></a>
-<span class="sourceLineNo">700</span>      return;<a name="line.700"></a>
-<span class="sourceLineNo">701</span>    }<a name="line.701"></a>
+<span class="sourceLineNo">696</span>    int timeout = 0;<a name="line.696"></a>
+<span class="sourceLineNo">697</span>    if (header.hasTimeout() &amp;&amp; header.getTimeout() &gt; 0) {<a name="line.697"></a>
+<span class="sourceLineNo">698</span>      timeout = Math.max(this.rpcServer.minClientRequestTimeout, header.getTimeout());<a name="line.698"></a>
+<span class="sourceLineNo">699</span>    }<a name="line.699"></a>
+<span class="sourceLineNo">700</span>    ServerCall&lt;?&gt; call = createCall(id, this.service, md, header, param, cellScanner, totalRequestSize,<a name="line.700"></a>
+<span class="sourceLineNo">701</span>      this.addr, timeout, this.callCleanup);<a name="line.701"></a>
 <span class="sourceLineNo">702</span><a name="line.702"></a>
-<span class="sourceLineNo">703</span>    int timeout = 0;<a name="line.703"></a>
-<span class="sourceLineNo">704</span>    if (header.hasTimeout() &amp;&amp; header.getTimeout() &gt; 0) {<a name="line.704"></a>
-<span class="sourceLineNo">705</span>      timeout = Math.max(this.rpcServer.minClientRequestTimeout, header.getTimeout());<a name="line.705"></a>
-<span class="sourceLineNo">706</span>    }<a name="line.706"></a>
-<span class="sourceLineNo">707</span>    ServerCall&lt;?&gt; call = createCall(id, this.service, md, header, param, cellScanner, totalRequestSize,<a name="line.707"></a>
-<span class="sourceLineNo">708</span>      this.addr, timeout, this.callCleanup);<a name="line.708"></a>
-<span class="sourceLineNo">709</span><a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (!this.rpcServer.scheduler.dispatch(new CallRunner(this.rpcServer, call))) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      this.rpcServer.callQueueSizeInBytes.add(-1 * call.getSize());<a name="line.711"></a>
-<span class="sourceLineNo">712</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.712"></a>
-<span class="sourceLineNo">713</span>      call.setResponse(null, null, RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.713"></a>
-<span class="sourceLineNo">714</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.714"></a>
-<span class="sourceLineNo">715</span>            ", too many items queued ?");<a name="line.715"></a>
-<span class="sourceLineNo">716</span>      call.sendResponseIfReady();<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    }<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  protected final RpcResponse getErrorResponse(String msg, Exception e) throws IOException {<a name="line.720"></a>
-<span class="sourceLineNo">721</span>    ResponseHeader.Builder headerBuilder = ResponseHeader.newBuilder().setCallId(-1);<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    ServerCall.setExceptionResponse(e, msg, headerBuilder);<a name="line.722"></a>
-<span class="sourceLineNo">723</span>    ByteBuffer headerBuf =<a name="line.723"></a>
-<span class="sourceLineNo">724</span>        ServerCall.createHeaderAndMessageBytes(null, headerBuilder.build(), 0, null);<a name="line.724"></a>
-<span class="sourceLineNo">725</span>    BufferChain buf = new BufferChain(headerBuf);<a name="line.725"></a>
-<span class="sourceLineNo">726</span>    return () -&gt; buf;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>  }<a name="line.727"></a>
-<span class="sourceLineNo">728</span><a name="line.728"></a>
-<span class="sourceLineNo">729</span>  private void doBadPreambleHandling(String msg) throws IOException {<a name="line.729"></a>
-<span class="sourceLineNo">730</span>    doBadPreambleHandling(msg, new FatalConnectionException(msg));<a name="line.730"></a>
-<span class="sourceLineNo">731</span>  }<a name="line.731"></a>
-<span class="sourceLineNo">732</span><a name="line.732"></a>
-<span class="sourceLineNo">733</span>  private void doBadPreambleHandling(String msg, Exception e) throws IOException {<a name="line.733"></a>
-<span class="sourceLineNo">734</span>    SimpleRpcServer.LOG.warn(msg);<a name="line.734"></a>
-<span class="sourceLineNo">735</span>    doRespond(getErrorResponse(msg, e));<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 final boolean processPreamble(ByteBuffer preambleBuffer) throws IOException {<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    assert preambleBuffer.remaining() == 6;<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    for (int i = 0; i &lt; RPC_HEADER.length; i++) {<a name="line.740"></a>
-<span class="sourceLineNo">741</span>      if (RPC_HEADER[i] != preambleBuffer.get()) {<a name="line.741"></a>
-<span class="sourceLineNo">742</span>        doBadPreambleHandling(<a name="line.742"></a>
-<span class="sourceLineNo">743</span>          "Expected HEADER=" + Bytes.toStringBinary(RPC_HEADER) + " but received HEADER=" +<a name="line.743"></a>
-<span class="sourceLineNo">744</span>              Bytes.toStringBinary(preambleBuffer.array(), 0, RPC_HEADER.length) + " from " +<a name="line.744"></a>
-<span class="sourceLineNo">745</span>              toString());<a name="line.745"></a>
-<span class="sourceLineNo">746</span>        return false;<a name="line.746"></a>
-<span class="sourceLineNo">747</span>      }<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    }<a name="line.748"></a>
-<span class="sourceLineNo">749</span>    int version = preambleBuffer.get() &amp; 0xFF;<a name="line.749"></a>
-<span class="sourceLineNo">750</span>    byte authbyte = preambleBuffer.get();<a name="line.750"></a>
-<span class="sourceLineNo">751</span>    this.authMethod = AuthMethod.valueOf(authbyte);<a name="line.751"></a>
-<span class="sourceLineNo">752</span>    if (version != SimpleRpcServer.CURRENT_VERSION) {<a name="line.752"></a>
-<span class="sourceLineNo">753</span>      String msg = getFatalConnectionString(version, authbyte);<a name="line.753"></a>
-<span class="sourceLineNo">754</span>      doBadPreambleHandling(msg, new WrongVersionException(msg));<a name="line.754"></a>
-<span class="sourceLineNo">755</span>      return false;<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    }<a name="line.756"></a>
-<span class="sourceLineNo">757</span>    if (authMethod == null) {<a name="line.757"></a>
-<span class="sourceLineNo">758</span>      String msg = getFatalConnectionString(version, authbyte);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>      doBadPreambleHandling(msg, new BadAuthException(msg));<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      return false;<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    }<a name="line.761"></a>
-<span class="sourceLineNo">762</span>    if (this.rpcServer.isSecurityEnabled &amp;&amp; authMethod == AuthMethod.SIMPLE) {<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      if (this.rpcServer.allowFallbackToSimpleAuth) {<a name="line.763"></a>
-<span class="sourceLineNo">764</span>        this.rpcServer.metrics.authenticationFallback();<a name="line.764"></a>
-<span class="sourceLineNo">765</span>        authenticatedWithFallback = true;<a name="line.765"></a>
-<span class="sourceLineNo">766</span>      } else {<a name="line.766"></a>
-<span class="sourceLineNo">767</span>        AccessDeniedException ae = new AccessDeniedException("Authentication is required");<a name="line.767"></a>
-<span class="sourceLineNo">768</span>        doRespond(getErrorResponse(ae.getMessage(), ae));<a name="line.768"></a>
-<span class="sourceLineNo">769</span>        return false;<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>    if (!this.rpcServer.isSecurityEnabled &amp;&amp; authMethod != AuthMethod.SIMPLE) {<a name="line.772"></a>
-<span class="sourceLineNo">773</span>      doRawSaslReply(SaslStatus.SUCCESS, new IntWritable(SaslUtil.SWITCH_TO_SIMPLE_AUTH), null,<a name="line.773"></a>
-<span class="sourceLineNo">774</span>        null);<a name="line.774"></a>
-<span class="sourceLineNo">775</span>      authMethod = AuthMethod.SIMPLE;<a name="line.775"></a>
-<span class="sourceLineNo">776</span>      // client has already sent the initial Sasl message and we<a name="line.776"></a>
-<span class="sourceLineNo">777</span>      // should ignore it. Both client and server should fall back<a name="line.777"></a>
-<span class="sourceLineNo">778</span>      // to simple auth from now on.<a name="line.778"></a>
-<span class="sourceLineNo">779</span>      skipInitialSaslHandshake = true;<a name="line.779"></a>
-<span class="sourceLineNo">780</span>    }<a name="line.780"></a>
-<span class="sourceLineNo">781</span>    if (authMethod != AuthMethod.SIMPLE) {<a name="line.781"></a>
-<span class="sourceLineNo">782</span>      useSasl = true;<a name="line.782"></a>
-<span class="sourceLineNo">783</span>    }<a name="line.783"></a>
-<span class="sourceLineNo">784</span>    return true;<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>  public abstract boolean isConnectionOpen();<a name="line.787"></a>
-<span class="sourceLineNo">788</span><a name="line.788"></a>
-<span class="sourceLineNo">789</span>  public abstract ServerCall&lt;?&gt; createCall(int id, BlockingService service, MethodDescriptor md,<a name="line.789"></a>
-<span class="sourceLineNo">790</span>      RequestHeader header, Message param, CellScanner cellScanner, long size,<a name="line.790"></a>
-<span class="sourceLineNo">791</span>      InetAddress remoteAddress, int timeout, CallCleanup reqCleanup);<a name="line.791"></a>
-<span class="sourceLineNo">792</span><a name="line.792"></a>
-<span class="sourceLineNo">793</span>  private static class ByteBuffByteInput extends ByteInput {<a name="line.793"></a>
-<span class="sourceLineNo">794</span><a name="line.794"></a>
-<span class="sourceLineNo">795</span>    private ByteBuff buf;<a name="line.795"></a>
-<span class="sourceLineNo">796</span>    private int offset;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>    private int length;<a name="line.797"></a>
-<span class="sourceLineNo">798</span><a name="line.798"></a>
-<span class="sourceLineNo">799</span>    ByteBuffByteInput(ByteBuff buf, int offset, int length) {<a name="line.799"></a>
-<span class="sourceLineNo">800</span>      this.buf = buf;<a name="line.800"></a>
-<span class="sourceLineNo">801</span>      this.offset = offset;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>      this.length = length;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>    }<a name="line.803"></a>
-<span class="sourceLineNo">804</span><a name="line.804"></a>
-<span class="sourceLineNo">805</span>    @Override<a name="line.805"></a>
-<span class="sourceLineNo">806</span>    public byte read(int offset) {<a name="line.806"></a>
-<span class="sourceLineNo">807</span>      return this.buf.get(getAbsoluteOffset(offset));<a name="line.807"></a>
-<span class="sourceLineNo">808</span>    }<a name="line.808"></a>
-<span class="sourceLineNo">809</span><a name="line.809"></a>
-<span class="sourceLineNo">810</span>    private int getAbsoluteOffset(int offset) {<a name="line.810"></a>
-<span class="sourceLineNo">811</span>      return this.offset + offset;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>    }<a name="line.812"></a>
-<span class="sourceLineNo">813</span><a name="line.813"></a>
-<span class="sourceLineNo">814</span>    @Override<a name="line.814"></a>
-<span class="sourceLineNo">815</span>    public int read(int offset, byte[] out, int outOffset, int len) {<a name="line.815"></a>
-<span class="sourceLineNo">816</span>      this.buf.get(getAbsoluteOffset(offset), out, outOffset, len);<a name="line.816"></a>
+<span class="sourceLineNo">703</span>    if (!this.rpcServer.scheduler.dispatch(new CallRunner(this.rpcServer, call))) {<a name="line.703"></a>
+<span class="sourceLineNo">704</span>      this.rpcServer.callQueueSizeInBytes.add(-1 * call.getSize());<a name="line.704"></a>
+<span class="sourceLineNo">705</span>      this.rpcServer.metrics.exception(RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION);<a name="line.705"></a>
+<span class="sourceLineNo">706</span>      call.setResponse(null, null, RpcServer.CALL_QUEUE_TOO_BIG_EXCEPTION,<a name="line.706"></a>
+<span class="sourceLineNo">707</span>        "Call queue is full on " + this.rpcServer.server.getServerName() +<a name="line.707"></a>
+<span class="sourceLineNo">708</span>            ", too many items queued ?");<a name="line.708"></a>
+<span class="sourceLineNo">709</span>      call.sendResponseIfReady();<a name="line.709"></a>
+<span class="sourceLineNo">710</span>    }<a name="line.710"></a>
+<span class="sourceLineNo">711</span>  }<a name="line.711"></a>
+<span class="sourceLineNo">712</span><a name="line.712"></a>
+<span class="sourceLineNo">713</span>  protected final RpcResponse getErrorResponse(String msg, Exception e) throws IOException {<a name="line.713"></a>
+<span class="sourceLineNo">714</span>    ResponseHeader.Builder headerBuilder = ResponseHeader.newBuilder().setCallId(-1);<a name="line.714"></a>
+<span class="sourceLineNo">715</span>    ServerCall.setExceptionResponse(e, msg, headerBuilder);<a name="line.715"></a>
+<span class="sourceLineNo">716</span>    ByteBuffer headerBuf =<a name="line.716"></a>
+<span class="sourceLineNo">717</span>        ServerCall.createHeaderAndMessageBytes(null, headerBuilder.build(), 0, null);<a name="line.717"></a>
+<span class="sourceLineNo">718</span>    BufferChain buf = new BufferChain(headerBuf);<a name="line.718"></a>
+<span class="sourceLineNo">719</span>    return () -&gt; buf;<a name="line.719"></a>
+<span class="sourceLineNo">720</span>  }<a name="line.720"></a>
+<span class="sourceLineNo">721</span><a name="line.721"></a>
+<span class="sourceLineNo">722</span>  private void doBadPreambleHandling(String msg) throws IOException {<a name="line.722"></a>
+<span class="sourceLineNo">723</span>    doBadPreambleHandling(msg, new FatalConnectionException(msg));<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>  private void doBadPreambleHandling(String msg, Exception e) throws IOException {<a name="line.726"></a>
+<span class="sourceLineNo">727</span>    SimpleRpcServer.LOG.warn(msg);<a name="line.727"></a>
+<span class="sourceLineNo">728</span>    doRespond(getErrorResponse(msg, e));<a name="line.728"><

<TRUNCATED>

[38/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/checkstyle-aggregate.html
----------------------------------------------------------------------
diff --git a/checkstyle-aggregate.html b/checkstyle-aggregate.html
index a00ec8a..78a8c13 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -281,10 +281,10 @@
 <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>3643</td>
+<td>3644</td>
 <td>0</td>
 <td>0</td>
-<td>15875</td></tr></table></div>
+<td>15874</td></tr></table></div>
 <div class="section">
 <h2><a name="Files"></a>Files</h2>
 <table border="0" class="table table-striped">
@@ -3882,7 +3882,7 @@
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcConnection.java">org/apache/hadoop/hbase/ipc/ServerRpcConnection.java</a></td>
 <td>0</td>
 <td>0</td>
-<td>24</td></tr>
+<td>23</td></tr>
 <tr class="b">
 <td><a href="#org.apache.hadoop.hbase.ipc.ServerRpcController.java">org/apache/hadoop/hbase/ipc/ServerRpcController.java</a></td>
 <td>0</td>
@@ -9894,7 +9894,7 @@
 <tr class="a">
 <td></td>
 <td><a class="externalLink" href="http://checkstyle.sourceforge.net/config_blocks.html#NeedBraces">NeedBraces</a></td>
-<td>1891</td>
+<td>1890</td>
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td></tr>
 <tr class="b">
 <td>coding</td>
@@ -51102,7 +51102,7 @@
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 7 should be on the previous line.</td>
-<td>149</td></tr></table></div>
+<td>174</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.io.hfile.TestScannerFromBucketCache.java">org/apache/hadoop/hbase/io/hfile/TestScannerFromBucketCache.java</h3>
 <table border="0" class="table table-striped">
@@ -53619,77 +53619,71 @@
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
-<td>345</td></tr>
+<td>422</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>428</td></tr>
+<td>431</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>437</td></tr>
+<td>440</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>446</td></tr>
+<td>503</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>509</td></tr>
+<td>505</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>511</td></tr>
+<td>566</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>573</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>600</td></tr>
-<tr class="a">
+<td>593</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>601</td></tr>
-<tr class="b">
+<td>594</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>650</td></tr>
-<tr class="a">
+<td>643</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>707</td></tr></table></div>
+<td>700</td></tr></table></div>
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.ServerRpcController.java">org/apache/hadoop/hbase/ipc/ServerRpcController.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -53698,61 +53692,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.SimpleRpcScheduler.java">org/apache/hadoop/hbase/ipc/SimpleRpcScheduler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.conf.ConfigurationObserver' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>50</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>54</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 102).</td>
 <td>87</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>FileTabCharacter</td>
 <td>File contains tab characters (this is the first instance).</td>
 <td>110</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>149</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>150</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>156</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -53761,97 +53755,97 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.SimpleRpcServer.java">org/apache/hadoop/hbase/ipc/SimpleRpcServer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.monitoring.MonitoredRPCHandler' import.</td>
 <td>50</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Pair' import.</td>
 <td>55</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>233</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>237</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>272</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 105).</td>
 <td>329</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>371</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>375</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>376</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 46 should have line break after.</td>
 <td>417</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>422</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>468</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>496</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>510</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -53860,37 +53854,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.SimpleRpcServerResponder.java">org/apache/hadoop/hbase/ipc/SimpleRpcServerResponder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Threads' import.</td>
 <td>33</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>85</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>92</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>221</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -53899,19 +53893,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.SimpleServerCall.java">org/apache/hadoop/hbase/ipc/SimpleServerCall.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.ByteBufferPool' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -53920,37 +53914,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.SimpleServerRpcConnection.java">org/apache/hadoop/hbase/ipc/SimpleServerRpcConnection.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.VersionInfoUtil' import.</td>
 <td>35</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.util.Pair' import.</td>
 <td>46</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>148</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>149</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -53959,13 +53953,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestBufferChain.java">org/apache/hadoop/hbase/ipc/TestBufferChain.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
@@ -53974,25 +53968,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestCellBlockBuilder.java">org/apache/hadoop/hbase/ipc/TestCellBlockBuilder.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>140</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>180</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54001,13 +53995,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestFifoRpcScheduler.java">org/apache/hadoop/hbase/ipc/TestFifoRpcScheduler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>MethodParamPad</td>
@@ -54016,253 +54010,253 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestHBaseClient.java">org/apache/hadoop/hbase/ipc/TestHBaseClient.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>32</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>42</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>52</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>52</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>55</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>55</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>56</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>56</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>58</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>58</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>59</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>59</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>60</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>62</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>62</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>63</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>63</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>64</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>64</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>70</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>70</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>71</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>71</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>72</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>73</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>73</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>75</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>76</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>77</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>77</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>78</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>78</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>79</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>')' is preceded with whitespace.</td>
 <td>79</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
 <td>'(' is followed by whitespace.</td>
 <td>83</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -54271,19 +54265,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestHBaseRpcControllerImpl.java">org/apache/hadoop/hbase/ipc/TestHBaseRpcControllerImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>65</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -54292,19 +54286,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestProtobufRpcServiceImpl.java">org/apache/hadoop/hbase/ipc/TestProtobufRpcServiceImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -54313,67 +54307,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestRpcMetrics.java">org/apache/hadoop/hbase/ipc/TestRpcMetrics.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.junit.Assert.*.</td>
 <td>20</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>47</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 112).</td>
 <td>50</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>69</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 101).</td>
 <td>93</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 8, expected level should be one of the following: 6, 35.</td>
 <td>156</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 8, expected level should be one of the following: 6, 35.</td>
 <td>157</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 8, expected level should be one of the following: 6, 35.</td>
 <td>160</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 8, expected level should be one of the following: 6, 35.</td>
 <td>161</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -54382,79 +54376,79 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.ipc.TestSimpleRpcScheduler.java">org/apache/hadoop/hbase/ipc/TestSimpleRpcScheduler.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 120).</td>
 <td>118</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 122).</td>
 <td>123</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 130).</td>
 <td>128</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>483</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>484</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>485</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>486</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>487</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>488</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 113).</td>
 <td>489</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 111).</td>
 <td>504</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -54463,13 +54457,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.log.HBaseMarkers.java">org/apache/hadoop/hbase/log/HBaseMarkers.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>FinalClass</td>
@@ -54478,31 +54472,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.Driver.java">org/apache/hadoop/hbase/mapred/Driver.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.util.ProgramDriver' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>32</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54511,73 +54505,73 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.GroupingTableMap.java">org/apache/hadoop/hbase/mapred/GroupingTableMap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.Cell' import.</td>
 <td>25</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' has incorrect indentation level 0, expected level should be 2.</td>
 <td>41</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>42</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>60</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>88</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>89</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>90</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>91</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>92</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>111</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54586,37 +54580,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.HRegionPartitioner.java">org/apache/hadoop/hbase/mapred/HRegionPartitioner.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Connection' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>40</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>41</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>45</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>whitespace</td>
 <td>ParenPad</td>
@@ -54625,61 +54619,61 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.IdentityTableMap.java">org/apache/hadoop/hbase/mapred/IdentityTableMap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.io.ImmutableBytesWritable' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Result' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' has incorrect indentation level 0, expected level should be 2.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>37</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>63</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>64</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>65</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>66</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54688,55 +54682,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.IdentityTableReduce.java">org/apache/hadoop/hbase/mapred/IdentityTableReduce.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Put' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' has incorrect indentation level 0, expected level should be 2.</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>39</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>46</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>47</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>48</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>49</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54745,43 +54739,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.MultiTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/MultiTableSnapshotInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Result' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>118</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>119</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>120</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54790,55 +54784,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.RowCounter.java">org/apache/hadoop/hbase/mapred/RowCounter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configured' import.</td>
 <td>24</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 2, expected level should be 4.</td>
 <td>51</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 4, expected level should be 6.</td>
 <td>57</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 8, expected level should be 6.</td>
 <td>59</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>72</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>74</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>114</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -54847,13 +54841,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableInputFormat.java">org/apache/hadoop/hbase/mapred/TableInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -54862,49 +54856,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableInputFormatBase.java">org/apache/hadoop/hbase/mapred/TableInputFormatBase.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.HConstants' import.</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>81</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>106</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>230</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>272</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>300</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
@@ -54913,19 +54907,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableMap.java">org/apache/hadoop/hbase/mapred/TableMap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Result' import.</td>
 <td>22</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -54934,139 +54928,139 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableMapReduceUtil.java">org/apache/hadoop/hbase/mapred/TableMapReduceUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Connection' import.</td>
 <td>26</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.IOException' import.</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>design</td>
 <td>HideUtilityClassConstructor</td>
 <td>Utility classes should not have a public or default constructor.</td>
 <td>51</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>168</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>172</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>173</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>182</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>199</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>203</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>204</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>237</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>249</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>254</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>266</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>331</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>334</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>348</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>351</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>364</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>378</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>390</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -55075,37 +55069,37 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableOutputFormat.java">org/apache/hadoop/hbase/mapred/TableOutputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.BufferedMutator' import.</td>
 <td>27</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>61</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>114</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>121</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55114,49 +55108,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableRecordReader.java">org/apache/hadoop/hbase/mapred/TableRecordReader.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Result' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'implements' has incorrect indentation level 0, expected level should be 2.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>43</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>133</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55165,55 +55159,55 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableRecordReaderImpl.java">org/apache/hadoop/hbase/mapred/TableRecordReaderImpl.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.DoNotRetryIOException' import.</td>
 <td>31</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.mapreduce.TableRecordReaderImpl.LOG_PER_ROW_COUNT' import.</td>
 <td>38</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>62</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>63</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>104</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>197</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55222,19 +55216,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableReduce.java">org/apache/hadoop/hbase/mapred/TableReduce.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Put' import.</td>
 <td>22</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55243,67 +55237,67 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/TableSnapshotInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Result' import.</td>
 <td>25</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.mapreduce.Job.</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'java.io.DataInput' import.</td>
 <td>37</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'getRecordReader' has incorrect indentation level 2, expected level should be 4.</td>
 <td>151</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>160</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>161</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>174</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>JavadocTagContinuationIndentation</td>
 <td>Line continuation have incorrect indentation level, expected level should be 2.</td>
 <td>175</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 115).</td>
 <td>181</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -55312,109 +55306,109 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TableSplit.java">org/apache/hadoop/hbase/mapred/TableSplit.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.TableName' import.</td>
 <td>27</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.HConstants' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>50</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>51</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>52</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>53</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def modifier' has incorrect indentation level 3, expected level should be 2.</td>
 <td>75</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 5, expected level should be 4.</td>
 <td>76</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def rcurly' has incorrect indentation level 3, expected level should be 2.</td>
 <td>77</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>119</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>120</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>121</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>122</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>123</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>124</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'method def' child has incorrect indentation level 6, expected level should be 4.</td>
 <td>125</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55423,31 +55417,31 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestGroupingTableMap.java">org/apache/hadoop/hbase/mapred/TestGroupingTableMap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>85</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>117</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>168</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -55456,19 +55450,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestIdentityTableMap.java">org/apache/hadoop/hbase/mapred/TestIdentityTableMap.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>57</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -55477,79 +55471,79 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestRowCounter.java">org/apache/hadoop/hbase/mapred/TestRowCounter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'for' construct must use '{}'s.</td>
 <td>91</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'array initialization' child has incorrect indentation level 8, expected level should be one of the following: 6, 35.</td>
 <td>105</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>150</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>151</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>152</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 10.</td>
 <td>153</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>154</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>155</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block' child has incorrect indentation level 10, expected level should be 12.</td>
 <td>156</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'block rcurly' has incorrect indentation level 8, expected level should be 10.</td>
 <td>157</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'case' child has incorrect indentation level 8, expected level should be 10.</td>
 <td>158</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55558,13 +55552,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestSplitTable.java">org/apache/hadoop/hbase/mapred/TestSplitTable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -55573,139 +55567,139 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestTableInputFormat.java">org/apache/hadoop/hbase/mapred/TestTableInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>AvoidStarImport</td>
 <td>Using the '.*' form of import should be avoided - org.apache.hadoop.hbase.*.</td>
 <td>34</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.filter.CompareFilter.CompareOp.</td>
 <td>44</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>112</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>121</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>123</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>143</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>144</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>145</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>146</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>147</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>162</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>163</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>193</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>228</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>265</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>276</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>287</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>298</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>309</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>383</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
 <td>Should use uppercase 'L'.</td>
 <td>386</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>UpperEll</td>
@@ -55714,19 +55708,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestTableMapReduce.java">org/apache/hadoop/hbase/mapred/TestTableMapReduce.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>LeftCurly</td>
 <td>'{' at column 29 should have line break after.</td>
 <td>61</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
@@ -55735,25 +55729,25 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestTableMapReduceUtil.java">org/apache/hadoop/hbase/mapred/TestTableMapReduceUtil.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>188</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>211</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -55762,13 +55756,13 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapred.TestTableSnapshotInputFormat.java">org/apache/hadoop/hbase/mapred/TestTableSnapshotInputFormat.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
@@ -55777,49 +55771,49 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.CellCounter.java">org/apache/hadoop/hbase/mapreduce/CellCounter.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>28</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>UnusedImports</td>
 <td>Unused import - org.apache.hadoop.hbase.filter.CompareFilter.</td>
 <td>36</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'extends' has incorrect indentation level 2, expected level should be 4.</td>
 <td>90</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 4, expected level should be 6.</td>
 <td>190</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>misc</td>
 <td>ArrayTypeStyle</td>
 <td>Array brackets at illegal position.</td>
 <td>247</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>259</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -55828,43 +55822,43 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.CellCreator.java">org/apache/hadoop/hbase/mapreduce/CellCreator.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.conf.Configuration' import.</td>
 <td>24</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>64</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>89</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>annotation</td>
 <td>MissingDeprecated</td>
 <td>Must include both @java.lang.Deprecated annotation and @deprecated Javadoc tag with description.</td>
 <td>91</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
 <td>At-clause should have a non-empty description.</td>
 <td>117</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>javadoc</td>
 <td>NonEmptyAtclauseDescription</td>
@@ -55873,19 +55867,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.CellSerialization.java">org/apache/hadoop/hbase/mapreduce/CellSerialization.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.KeyValue' import.</td>
 <td>28</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
@@ -55894,19 +55888,19 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.CellSortReducer.java">org/apache/hadoop/hbase/mapreduce/CellSortReducer.java</h3>
 <table border="0" class="table table-striped">
-<tr class="a">
+<tr class="b">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>44</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
@@ -55915,91 +55909,91 @@
 <div class="section">
 <h3 id="org.apache.hadoop.hbase.mapreduce.CopyTable.java">org/apache/hadoop/hbase/mapreduce/CopyTable.java</h3>
 <table border="0" class="table table-striped">
-<tr class="b">
+<tr class="a">
 <th>Severity</th>
 <th>Category</th>
 <th>Rule</th>
 <th>Message</th>
 <th>Line</th></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>imports</td>
 <td>ImportOrder</td>
 <td>Wrong order for 'org.apache.hadoop.hbase.client.Admin' import.</td>
 <td>35</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'throws' has incorrect indentation level 2, expected level should be 4.</td>
 <td>82</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>127</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>128</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>129</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'if' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>130</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>indentation</td>
 <td>Indentation</td>
 <td>'else' child has incorrect indentation level 12, expected level should be 10.</td>
 <td>133</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 103).</td>
 <td>212</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>214</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 104).</td>
 <td>215</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 106).</td>
 <td>217</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>sizes</td>
 <td>LineLength</td>
 <td>Line is longer than 100 characters (found 110).</td>
 <td>220</td></tr>
-<tr class="a">
+<tr class="b">
 <td><img src="images/icon_error_sml.gif" alt="" />&#160;Error</td>
 <td>blocks</td>
 <td>NeedBraces</td>
 <td>'if' construct must use '{}'s.</td>
 <td>363</td></tr>
-<tr class="b">
+<tr class="a">
 <td><img src="images/icon_error

<TRUNCATED>

[02/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
index 2cb897e..9091ed6 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
@@ -84,330 +84,404 @@
 <span class="sourceLineNo">076</span><a name="line.76"></a>
 <span class="sourceLineNo">077</span>  private static final byte[] bbb = Bytes.toBytes("bbb");<a name="line.77"></a>
 <span class="sourceLineNo">078</span>  private static final byte[] yyy = Bytes.toBytes("yyy");<a name="line.78"></a>
-<span class="sourceLineNo">079</span><a name="line.79"></a>
-<span class="sourceLineNo">080</span>  @Rule<a name="line.80"></a>
-<span class="sourceLineNo">081</span>  public TestName name = new TestName();<a name="line.81"></a>
-<span class="sourceLineNo">082</span><a name="line.82"></a>
-<span class="sourceLineNo">083</span>  @Override<a name="line.83"></a>
-<span class="sourceLineNo">084</span>  protected byte[] getStartRow() {<a name="line.84"></a>
-<span class="sourceLineNo">085</span>    return bbb;<a name="line.85"></a>
-<span class="sourceLineNo">086</span>  }<a name="line.86"></a>
-<span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>  @Override<a name="line.88"></a>
-<span class="sourceLineNo">089</span>  protected byte[] getEndRow() {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>    return yyy;<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>  @After<a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public void tearDown() throws Exception {<a name="line.94"></a>
-<span class="sourceLineNo">095</span>  }<a name="line.95"></a>
-<span class="sourceLineNo">096</span><a name="line.96"></a>
-<span class="sourceLineNo">097</span>  @Test<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  public void testGetBestLocations() throws IOException {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.99"></a>
-<span class="sourceLineNo">100</span>    Configuration conf = UTIL.getConfiguration();<a name="line.100"></a>
-<span class="sourceLineNo">101</span><a name="line.101"></a>
-<span class="sourceLineNo">102</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    Assert.assertEquals(null,<a name="line.103"></a>
-<span class="sourceLineNo">104</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.104"></a>
-<span class="sourceLineNo">105</span><a name="line.105"></a>
-<span class="sourceLineNo">106</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.108"></a>
-<span class="sourceLineNo">109</span><a name="line.109"></a>
-<span class="sourceLineNo">110</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.112"></a>
-<span class="sourceLineNo">113</span><a name="line.113"></a>
-<span class="sourceLineNo">114</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.115"></a>
-<span class="sourceLineNo">116</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.116"></a>
-<span class="sourceLineNo">117</span><a name="line.117"></a>
-<span class="sourceLineNo">118</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.118"></a>
-<span class="sourceLineNo">119</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.119"></a>
-<span class="sourceLineNo">120</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.124"></a>
-<span class="sourceLineNo">125</span><a name="line.125"></a>
-<span class="sourceLineNo">126</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.127"></a>
-<span class="sourceLineNo">128</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.128"></a>
-<span class="sourceLineNo">129</span><a name="line.129"></a>
-<span class="sourceLineNo">130</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.131"></a>
-<span class="sourceLineNo">132</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.132"></a>
-<span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    VALIDATION_ERROR<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  }<a name="line.143"></a>
-<span class="sourceLineNo">144</span><a name="line.144"></a>
-<span class="sourceLineNo">145</span>  public static class TestTableSnapshotMapper<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    @Override<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.148"></a>
-<span class="sourceLineNo">149</span>        Context context) throws IOException, InterruptedException {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      verifyRowFromMap(key, value);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      context.write(key, NullWritable.get());<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>  public static class TestTableSnapshotReducer<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.158"></a>
-<span class="sourceLineNo">159</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.161"></a>
-<span class="sourceLineNo">162</span>       Context context) throws IOException, InterruptedException {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      rowTracker.addRow(key.get());<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>    protected void cleanup(Context context) throws IOException,<a name="line.167"></a>
-<span class="sourceLineNo">168</span>        InterruptedException {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      rowTracker.validate();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span>  }<a name="line.171"></a>
-<span class="sourceLineNo">172</span><a name="line.172"></a>
-<span class="sourceLineNo">173</span>  @Test<a name="line.173"></a>
-<span class="sourceLineNo">174</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    setupCluster();<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    String snapshotName = "foo";<a name="line.177"></a>
-<span class="sourceLineNo">178</span><a name="line.178"></a>
-<span class="sourceLineNo">179</span>    try {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.181"></a>
-<span class="sourceLineNo">182</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.182"></a>
-<span class="sourceLineNo">183</span><a name="line.183"></a>
-<span class="sourceLineNo">184</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.184"></a>
-<span class="sourceLineNo">185</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.185"></a>
-<span class="sourceLineNo">186</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.186"></a>
-<span class="sourceLineNo">187</span><a name="line.187"></a>
-<span class="sourceLineNo">188</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.189"></a>
-<span class="sourceLineNo">190</span>      Assert.assertEquals(<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.191"></a>
-<span class="sourceLineNo">192</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.192"></a>
-<span class="sourceLineNo">193</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      Assert.assertEquals(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>        "Snapshot job should not use BucketCache.",<a name="line.195"></a>
-<span class="sourceLineNo">196</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    } finally {<a name="line.197"></a>
-<span class="sourceLineNo">198</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.198"></a>
-<span class="sourceLineNo">199</span>      UTIL.deleteTable(tableName);<a name="line.199"></a>
-<span class="sourceLineNo">200</span>      tearDownCluster();<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
-<span class="sourceLineNo">202</span>  }<a name="line.202"></a>
-<span class="sourceLineNo">203</span><a name="line.203"></a>
-<span class="sourceLineNo">204</span>  @Override<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.205"></a>
-<span class="sourceLineNo">206</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      NullWritable.class, job, false, tmpTableDir);<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 void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.214"></a>
-<span class="sourceLineNo">215</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      throws Exception {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    setupCluster();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    try {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      createTableAndSnapshot(<a name="line.220"></a>
-<span class="sourceLineNo">221</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>      Configuration conf = util.getConfiguration();<a name="line.223"></a>
-<span class="sourceLineNo">224</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.224"></a>
-<span class="sourceLineNo">225</span>      Job job = new Job(conf);<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.226"></a>
-<span class="sourceLineNo">227</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.227"></a>
-<span class="sourceLineNo">228</span><a name="line.228"></a>
-<span class="sourceLineNo">229</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.230"></a>
-<span class="sourceLineNo">231</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.231"></a>
-<span class="sourceLineNo">232</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.232"></a>
-<span class="sourceLineNo">233</span>                numSplitsPerRegion);<a name="line.233"></a>
-<span class="sourceLineNo">234</span>      } else {<a name="line.234"></a>
-<span class="sourceLineNo">235</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.235"></a>
-<span class="sourceLineNo">236</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>                NullWritable.class, job, false, tmpTableDir);<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>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.240"></a>
+<span class="sourceLineNo">079</span>  private static final byte[] bbc = Bytes.toBytes("bbc");<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private static final byte[] yya = Bytes.toBytes("yya");<a name="line.80"></a>
+<span class="sourceLineNo">081</span><a name="line.81"></a>
+<span class="sourceLineNo">082</span>  @Rule<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  public TestName name = new TestName();<a name="line.83"></a>
+<span class="sourceLineNo">084</span><a name="line.84"></a>
+<span class="sourceLineNo">085</span>  @Override<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  protected byte[] getStartRow() {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    return bbb;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span><a name="line.89"></a>
+<span class="sourceLineNo">090</span>  @Override<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  protected byte[] getEndRow() {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    return yyy;<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span><a name="line.94"></a>
+<span class="sourceLineNo">095</span>  @After<a name="line.95"></a>
+<span class="sourceLineNo">096</span>  public void tearDown() throws Exception {<a name="line.96"></a>
+<span class="sourceLineNo">097</span>  }<a name="line.97"></a>
+<span class="sourceLineNo">098</span><a name="line.98"></a>
+<span class="sourceLineNo">099</span>  @Test<a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public void testGetBestLocations() throws IOException {<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    TableSnapshotInputFormatImpl tsif = new TableSnapshotInputFormatImpl();<a name="line.101"></a>
+<span class="sourceLineNo">102</span>    Configuration conf = UTIL.getConfiguration();<a name="line.102"></a>
+<span class="sourceLineNo">103</span><a name="line.103"></a>
+<span class="sourceLineNo">104</span>    HDFSBlocksDistribution blockDistribution = new HDFSBlocksDistribution();<a name="line.104"></a>
+<span class="sourceLineNo">105</span>    Assert.assertEquals(null,<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.106"></a>
+<span class="sourceLineNo">107</span><a name="line.107"></a>
+<span class="sourceLineNo">108</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.109"></a>
+<span class="sourceLineNo">110</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.110"></a>
+<span class="sourceLineNo">111</span><a name="line.111"></a>
+<span class="sourceLineNo">112</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 1);<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.114"></a>
+<span class="sourceLineNo">115</span><a name="line.115"></a>
+<span class="sourceLineNo">116</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 1);<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.117"></a>
+<span class="sourceLineNo">118</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.118"></a>
+<span class="sourceLineNo">119</span><a name="line.119"></a>
+<span class="sourceLineNo">120</span>    blockDistribution = new HDFSBlocksDistribution();<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h1"}, 10);<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 7);<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 5);<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 1);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    Assert.assertEquals(Lists.newArrayList("h1"),<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 2);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    Assert.assertEquals(Lists.newArrayList("h1", "h2"),<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.130"></a>
+<span class="sourceLineNo">131</span><a name="line.131"></a>
+<span class="sourceLineNo">132</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h2"}, 3);<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    Assert.assertEquals(Lists.newArrayList("h2", "h1"),<a name="line.133"></a>
+<span class="sourceLineNo">134</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h3"}, 6);<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    blockDistribution.addHostsAndBlockWeight(new String[] {"h4"}, 9);<a name="line.137"></a>
+<span class="sourceLineNo">138</span><a name="line.138"></a>
+<span class="sourceLineNo">139</span>    Assert.assertEquals(Lists.newArrayList("h2", "h3", "h4"),<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      TableSnapshotInputFormatImpl.getBestLocations(conf, blockDistribution));<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>  public static enum TestTableSnapshotCounters {<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    VALIDATION_ERROR<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>  public static class TestTableSnapshotMapper<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    extends TableMapper&lt;ImmutableBytesWritable, NullWritable&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    @Override<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    protected void map(ImmutableBytesWritable key, Result value,<a name="line.150"></a>
+<span class="sourceLineNo">151</span>        Context context) throws IOException, InterruptedException {<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      // Validate a single row coming from the snapshot, and emit the row key<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      verifyRowFromMap(key, value);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>      context.write(key, NullWritable.get());<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><a name="line.157"></a>
+<span class="sourceLineNo">158</span>  public static class TestTableSnapshotReducer<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    extends Reducer&lt;ImmutableBytesWritable, NullWritable, NullWritable, NullWritable&gt; {<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        new HBaseTestingUtility.SeenRowTracker(bbb, yyy);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    @Override<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    protected void reduce(ImmutableBytesWritable key, Iterable&lt;NullWritable&gt; values,<a name="line.163"></a>
+<span class="sourceLineNo">164</span>       Context context) throws IOException, InterruptedException {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      rowTracker.addRow(key.get());<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span><a name="line.167"></a>
+<span class="sourceLineNo">168</span>    @Override<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    protected void cleanup(Context context) throws IOException,<a name="line.169"></a>
+<span class="sourceLineNo">170</span>        InterruptedException {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      rowTracker.validate();<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
+<span class="sourceLineNo">173</span>  }<a name="line.173"></a>
+<span class="sourceLineNo">174</span><a name="line.174"></a>
+<span class="sourceLineNo">175</span>  @Test<a name="line.175"></a>
+<span class="sourceLineNo">176</span>  public void testInitTableSnapshotMapperJobConfig() throws Exception {<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    setupCluster();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    String snapshotName = "foo";<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    try {<a name="line.181"></a>
+<span class="sourceLineNo">182</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 1);<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.183"></a>
+<span class="sourceLineNo">184</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.184"></a>
+<span class="sourceLineNo">185</span><a name="line.185"></a>
+<span class="sourceLineNo">186</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.186"></a>
+<span class="sourceLineNo">187</span>        new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.187"></a>
+<span class="sourceLineNo">188</span>        NullWritable.class, job, false, tmpTableDir);<a name="line.188"></a>
+<span class="sourceLineNo">189</span><a name="line.189"></a>
+<span class="sourceLineNo">190</span>      // TODO: would be better to examine directly the cache instance that results from this<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      // config. Currently this is not possible because BlockCache initialization is static.<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      Assert.assertEquals(<a name="line.192"></a>
+<span class="sourceLineNo">193</span>        "Snapshot job should be configured for default LruBlockCache.",<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        HConstants.HFILE_BLOCK_CACHE_SIZE_DEFAULT,<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        job.getConfiguration().getFloat(HConstants.HFILE_BLOCK_CACHE_SIZE_KEY, -1), 0.01);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>      Assert.assertEquals(<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        "Snapshot job should not use BucketCache.",<a name="line.197"></a>
+<span class="sourceLineNo">198</span>        0, job.getConfiguration().getFloat("hbase.bucketcache.size", -1), 0.01);<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    } finally {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      UTIL.deleteTable(tableName);<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      tearDownCluster();<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>  @Override<a name="line.206"></a>
+<span class="sourceLineNo">207</span>  public void testRestoreSnapshotDoesNotCreateBackRefLinksInit(TableName tableName,<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      String snapshotName, Path tmpTableDir) throws Exception {<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    Job job = new Job(UTIL.getConfiguration());<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      new Scan(), TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.211"></a>
+<span class="sourceLineNo">212</span>      NullWritable.class, job, false, tmpTableDir);<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  }<a name="line.213"></a>
+<span class="sourceLineNo">214</span><a name="line.214"></a>
+<span class="sourceLineNo">215</span>  @Override<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  public void testWithMockedMapReduce(HBaseTestingUtility util, String snapshotName,<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      int numRegions, int numSplitsPerRegion, int expectedNumSplits, boolean setLocalityEnabledTo)<a name="line.217"></a>
+<span class="sourceLineNo">218</span>      throws Exception {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    setupCluster();<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    try {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      createTableAndSnapshot(<a name="line.222"></a>
+<span class="sourceLineNo">223</span>        util, tableName, snapshotName, getStartRow(), getEndRow(), numRegions);<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>      Configuration conf = util.getConfiguration();<a name="line.225"></a>
+<span class="sourceLineNo">226</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, setLocalityEnabledTo);<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      Job job = new Job(conf);<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      Path tmpTableDir = util.getDataTestDirOnTestFS(snapshotName);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>      Scan scan = new Scan(getStartRow(), getEndRow()); // limit the scan<a name="line.229"></a>
+<span class="sourceLineNo">230</span><a name="line.230"></a>
+<span class="sourceLineNo">231</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.232"></a>
+<span class="sourceLineNo">233</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.233"></a>
+<span class="sourceLineNo">234</span>                NullWritable.class, job, false, tmpTableDir, new RegionSplitter.UniformSplit(),<a name="line.234"></a>
+<span class="sourceLineNo">235</span>                numSplitsPerRegion);<a name="line.235"></a>
+<span class="sourceLineNo">236</span>      } else {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.237"></a>
+<span class="sourceLineNo">238</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                NullWritable.class, job, false, tmpTableDir);<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>    } finally {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      util.deleteTable(tableName);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      tearDownCluster();<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>  @Test<a name="line.249"></a>
-<span class="sourceLineNo">250</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    setupCluster();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.252"></a>
-<span class="sourceLineNo">253</span>    String snapshotName = "testSnapshotBug";<a name="line.253"></a>
-<span class="sourceLineNo">254</span>    try {<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        UTIL.deleteTable(tableName);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      }<a name="line.257"></a>
+<span class="sourceLineNo">242</span>      verifyWithMockedMapReduce(job, numRegions, expectedNumSplits, getStartRow(), getEndRow());<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>    } finally {<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      util.getAdmin().deleteSnapshot(snapshotName);<a name="line.245"></a>
+<span class="sourceLineNo">246</span>      util.deleteTable(tableName);<a name="line.246"></a>
+<span class="sourceLineNo">247</span>      tearDownCluster();<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    }<a name="line.248"></a>
+<span class="sourceLineNo">249</span>  }<a name="line.249"></a>
+<span class="sourceLineNo">250</span><a name="line.250"></a>
+<span class="sourceLineNo">251</span>  @Test<a name="line.251"></a>
+<span class="sourceLineNo">252</span>  public void testWithMockedMapReduceWithSplitsPerRegion() throws Exception {<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    setupCluster();<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    try {<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.257"></a>
 <span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>      UTIL.createTable(tableName, FAMILIES);<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      Admin admin = UTIL.getAdmin();<a name="line.260"></a>
-<span class="sourceLineNo">261</span><a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // put some stuff in the table<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      UTIL.loadTable(table, FAMILIES);<a name="line.264"></a>
+<span class="sourceLineNo">259</span>      Configuration conf = UTIL.getConfiguration();<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      Job job = new Job(conf);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>      // test scan with startRow and stopRow<a name="line.263"></a>
+<span class="sourceLineNo">264</span>      Scan scan = new Scan(bbc, yya);<a name="line.264"></a>
 <span class="sourceLineNo">265</span><a name="line.265"></a>
-<span class="sourceLineNo">266</span>      // split to 2 regions<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.268"></a>
+<span class="sourceLineNo">266</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.267"></a>
+<span class="sourceLineNo">268</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.268"></a>
 <span class="sourceLineNo">269</span><a name="line.269"></a>
-<span class="sourceLineNo">270</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.271"></a>
-<span class="sourceLineNo">272</span><a name="line.272"></a>
-<span class="sourceLineNo">273</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        null, snapshotName, rootDir, fs, true);<a name="line.274"></a>
-<span class="sourceLineNo">275</span><a name="line.275"></a>
-<span class="sourceLineNo">276</span>      // load different values<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.278"></a>
-<span class="sourceLineNo">279</span><a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // cause flush to create new files in the region<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      admin.flush(tableName);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>      table.close();<a name="line.282"></a>
-<span class="sourceLineNo">283</span><a name="line.283"></a>
-<span class="sourceLineNo">284</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // limit the scan<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<a name="line.287"></a>
-<span class="sourceLineNo">288</span><a name="line.288"></a>
-<span class="sourceLineNo">289</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        tmpTableDir);<a name="line.291"></a>
+<span class="sourceLineNo">270</span>      verifyWithMockedMapReduce(job, 10, 40, bbc, yya);<a name="line.270"></a>
+<span class="sourceLineNo">271</span>    } finally {<a name="line.271"></a>
+<span class="sourceLineNo">272</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      UTIL.deleteTable(tableName);<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      tearDownCluster();<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    }<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  }<a name="line.276"></a>
+<span class="sourceLineNo">277</span><a name="line.277"></a>
+<span class="sourceLineNo">278</span>  @Test<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  public void testWithMockedMapReduceWithNoStartRowStopRow() throws Exception {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>    setupCluster();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    String snapshotName = "testWithMockedMapReduceMultiRegion";<a name="line.281"></a>
+<span class="sourceLineNo">282</span>    final TableName tableName = TableName.valueOf(name.getMethodName());<a name="line.282"></a>
+<span class="sourceLineNo">283</span>    try {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      createTableAndSnapshot(UTIL, tableName, snapshotName, getStartRow(), getEndRow(), 10);<a name="line.284"></a>
+<span class="sourceLineNo">285</span><a name="line.285"></a>
+<span class="sourceLineNo">286</span>      Configuration conf = UTIL.getConfiguration();<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      conf.setBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY, false);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      Job job = new Job(conf);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // test scan without startRow and stopRow<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      Scan scan2 = new Scan();<a name="line.291"></a>
 <span class="sourceLineNo">292</span><a name="line.292"></a>
-<span class="sourceLineNo">293</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    } finally {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      UTIL.deleteTable(tableName);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      tearDownCluster();<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 void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      byte[] startRow, byte[] stopRow)<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      throws IOException, InterruptedException {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.305"></a>
+<span class="sourceLineNo">293</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan2,<a name="line.293"></a>
+<span class="sourceLineNo">294</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        tmpTableDir, new RegionSplitter.UniformSplit(), 5);<a name="line.295"></a>
+<span class="sourceLineNo">296</span><a name="line.296"></a>
+<span class="sourceLineNo">297</span>      verifyWithMockedMapReduce(job, 10, 50, HConstants.EMPTY_START_ROW,<a name="line.297"></a>
+<span class="sourceLineNo">298</span>        HConstants.EMPTY_START_ROW);<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>    } finally {<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      UTIL.deleteTable(tableName);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>      tearDownCluster();<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>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.307"></a>
-<span class="sourceLineNo">308</span><a name="line.308"></a>
-<span class="sourceLineNo">309</span>    HBaseTestingUtility.SeenRowTracker rowTracker =<a name="line.309"></a>
-<span class="sourceLineNo">310</span>        new HBaseTestingUtility.SeenRowTracker(startRow, stopRow);<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>    boolean localityEnabled =<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.313"></a>
-<span class="sourceLineNo">314</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.314"></a>
-<span class="sourceLineNo">315</span><a name="line.315"></a>
-<span class="sourceLineNo">316</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // validate input split<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      InputSplit split = splits.get(i);<a name="line.318"></a>
-<span class="sourceLineNo">319</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      if (localityEnabled) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      } else {<a name="line.322"></a>
-<span class="sourceLineNo">323</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<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>      // validate record reader<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.327"></a>
-<span class="sourceLineNo">328</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.328"></a>
-<span class="sourceLineNo">329</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.329"></a>
-<span class="sourceLineNo">330</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>      rr.initialize(split, taskAttemptContext);<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>      // validate we can read all the data back<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      while (rr.nextKeyValue()) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        byte[] row = rr.getCurrentKey().get();<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.336"></a>
-<span class="sourceLineNo">337</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>    // validate all rows are seen<a name="line.343"></a>
-<span class="sourceLineNo">344</span>    rowTracker.validate();<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  }<a name="line.345"></a>
+<span class="sourceLineNo">307</span>  @Test<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  public void testNoDuplicateResultsWhenSplitting() throws Exception {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    setupCluster();<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    TableName tableName = TableName.valueOf("testNoDuplicateResultsWhenSplitting");<a name="line.310"></a>
+<span class="sourceLineNo">311</span>    String snapshotName = "testSnapshotBug";<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    try {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      if (UTIL.getAdmin().tableExists(tableName)) {<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        UTIL.deleteTable(tableName);<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>      UTIL.createTable(tableName, FAMILIES);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      Admin admin = UTIL.getAdmin();<a name="line.318"></a>
+<span class="sourceLineNo">319</span><a name="line.319"></a>
+<span class="sourceLineNo">320</span>      // put some stuff in the table<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      Table table = UTIL.getConnection().getTable(tableName);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      UTIL.loadTable(table, FAMILIES);<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      // split to 2 regions<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      admin.split(tableName, Bytes.toBytes("eee"));<a name="line.325"></a>
+<span class="sourceLineNo">326</span>      TestTableSnapshotScanner.blockUntilSplitFinished(UTIL, tableName, 2);<a name="line.326"></a>
+<span class="sourceLineNo">327</span><a name="line.327"></a>
+<span class="sourceLineNo">328</span>      Path rootDir = FSUtils.getRootDir(UTIL.getConfiguration());<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      FileSystem fs = rootDir.getFileSystem(UTIL.getConfiguration());<a name="line.329"></a>
+<span class="sourceLineNo">330</span><a name="line.330"></a>
+<span class="sourceLineNo">331</span>      SnapshotTestingUtils.createSnapshotAndValidate(admin, tableName, Arrays.asList(FAMILIES),<a name="line.331"></a>
+<span class="sourceLineNo">332</span>        null, snapshotName, rootDir, fs, true);<a name="line.332"></a>
+<span class="sourceLineNo">333</span><a name="line.333"></a>
+<span class="sourceLineNo">334</span>      // load different values<a name="line.334"></a>
+<span class="sourceLineNo">335</span>      byte[] value = Bytes.toBytes("after_snapshot_value");<a name="line.335"></a>
+<span class="sourceLineNo">336</span>      UTIL.loadTable(table, FAMILIES, value);<a name="line.336"></a>
+<span class="sourceLineNo">337</span><a name="line.337"></a>
+<span class="sourceLineNo">338</span>      // cause flush to create new files in the region<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      admin.flush(tableName);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>      table.close();<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>      Job job = new Job(UTIL.getConfiguration());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      Path tmpTableDir = UTIL.getDataTestDirOnTestFS(snapshotName);<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // limit the scan<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      Scan scan = new Scan().withStartRow(getStartRow()).withStopRow(getEndRow());<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>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.349"></a>
-<span class="sourceLineNo">350</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<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>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.355"></a>
-<span class="sourceLineNo">356</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.357"></a>
-<span class="sourceLineNo">358</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>    LOG.info("testing with MapReduce");<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>    LOG.info("create the table and snapshot");<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.363"></a>
+<span class="sourceLineNo">347</span>      TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName, scan,<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        TestTableSnapshotMapper.class, ImmutableBytesWritable.class, NullWritable.class, job, false,<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        tmpTableDir);<a name="line.349"></a>
+<span class="sourceLineNo">350</span><a name="line.350"></a>
+<span class="sourceLineNo">351</span>      verifyWithMockedMapReduce(job, 2, 2, getStartRow(), getEndRow());<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    } finally {<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      UTIL.getAdmin().deleteSnapshot(snapshotName);<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      UTIL.deleteTable(tableName);<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      tearDownCluster();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>  }<a name="line.357"></a>
+<span class="sourceLineNo">358</span><a name="line.358"></a>
+<span class="sourceLineNo">359</span>  private void verifyWithMockedMapReduce(Job job, int numRegions, int expectedNumSplits,<a name="line.359"></a>
+<span class="sourceLineNo">360</span>      byte[] startRow, byte[] stopRow)<a name="line.360"></a>
+<span class="sourceLineNo">361</span>      throws IOException, InterruptedException {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    TableSnapshotInputFormat tsif = new TableSnapshotInputFormat();<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    List&lt;InputSplit&gt; splits = tsif.getSplits(job);<a name="line.363"></a>
 <span class="sourceLineNo">364</span><a name="line.364"></a>
-<span class="sourceLineNo">365</span>    if (shutdownCluster) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>      LOG.info("shutting down hbase cluster.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>      util.shutdownMiniHBaseCluster();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    }<a name="line.368"></a>
+<span class="sourceLineNo">365</span>    Assert.assertEquals(expectedNumSplits, splits.size());<a name="line.365"></a>
+<span class="sourceLineNo">366</span><a name="line.366"></a>
+<span class="sourceLineNo">367</span>    HBaseTestingUtility.SeenRowTracker rowTracker = new HBaseTestingUtility.SeenRowTracker(startRow,<a name="line.367"></a>
+<span class="sourceLineNo">368</span>        stopRow.length &gt; 0 ? stopRow : Bytes.toBytes("\uffff"));<a name="line.368"></a>
 <span class="sourceLineNo">369</span><a name="line.369"></a>
-<span class="sourceLineNo">370</span>    try {<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      // create the job<a name="line.371"></a>
-<span class="sourceLineNo">372</span>      Job job = new Job(util.getConfiguration());<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.373"></a>
-<span class="sourceLineNo">374</span><a name="line.374"></a>
-<span class="sourceLineNo">375</span>      job.setJarByClass(util.getClass());<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.376"></a>
-<span class="sourceLineNo">377</span>              TestTableSnapshotInputFormat.class);<a name="line.377"></a>
-<span class="sourceLineNo">378</span><a name="line.378"></a>
-<span class="sourceLineNo">379</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.380"></a>
-<span class="sourceLineNo">381</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.381"></a>
-<span class="sourceLineNo">382</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.382"></a>
-<span class="sourceLineNo">383</span>                numSplitsPerRegion);<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      } else {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.385"></a>
-<span class="sourceLineNo">386</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.386"></a>
-<span class="sourceLineNo">387</span>                NullWritable.class, job, true, tableDir);<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>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      job.setNumReduceTasks(1);<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    } finally {<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      if (!shutdownCluster) {<a name="line.396"></a>
-<span class="sourceLineNo">397</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        util.deleteTable(tableName);<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    }<a name="line.400"></a>
-<span class="sourceLineNo">401</span>  }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>}<a name="line.402"></a>
+<span class="sourceLineNo">370</span>    boolean localityEnabled =<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        job.getConfiguration().getBoolean(SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_KEY,<a name="line.371"></a>
+<span class="sourceLineNo">372</span>                                          SNAPSHOT_INPUTFORMAT_LOCALITY_ENABLED_DEFAULT);<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>    for (int i = 0; i &lt; splits.size(); i++) {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      // validate input split<a name="line.375"></a>
+<span class="sourceLineNo">376</span>      InputSplit split = splits.get(i);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      Assert.assertTrue(split instanceof TableSnapshotRegionSplit);<a name="line.377"></a>
+<span class="sourceLineNo">378</span>      TableSnapshotRegionSplit snapshotRegionSplit = (TableSnapshotRegionSplit) split;<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      if (localityEnabled) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length != 0);<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      } else {<a name="line.381"></a>
+<span class="sourceLineNo">382</span>        Assert.assertTrue(split.getLocations() != null &amp;&amp; split.getLocations().length == 0);<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      }<a name="line.383"></a>
+<span class="sourceLineNo">384</span><a name="line.384"></a>
+<span class="sourceLineNo">385</span>      Scan scan =<a name="line.385"></a>
+<span class="sourceLineNo">386</span>          TableMapReduceUtil.convertStringToScan(snapshotRegionSplit.getDelegate().getScan());<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (startRow.length &gt; 0) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        Assert.assertTrue(<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          Bytes.toStringBinary(startRow) + " should &lt;= " + Bytes.toStringBinary(scan.getStartRow()),<a name="line.389"></a>
+<span class="sourceLineNo">390</span>          Bytes.compareTo(startRow, scan.getStartRow()) &lt;= 0);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      if (stopRow.length &gt; 0) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        Assert.assertTrue(<a name="line.393"></a>
+<span class="sourceLineNo">394</span>          Bytes.toStringBinary(stopRow) + " should &gt;= " + Bytes.toStringBinary(scan.getStopRow()),<a name="line.394"></a>
+<span class="sourceLineNo">395</span>          Bytes.compareTo(stopRow, scan.getStopRow()) &gt;= 0);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      Assert.assertTrue("startRow should &lt; stopRow",<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        Bytes.compareTo(scan.getStartRow(), scan.getStopRow()) &lt; 0);<a name="line.398"></a>
+<span class="sourceLineNo">399</span><a name="line.399"></a>
+<span class="sourceLineNo">400</span>      // validate record reader<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      TaskAttemptContext taskAttemptContext = mock(TaskAttemptContext.class);<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      when(taskAttemptContext.getConfiguration()).thenReturn(job.getConfiguration());<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; rr =<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          tsif.createRecordReader(split, taskAttemptContext);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>      rr.initialize(split, taskAttemptContext);<a name="line.405"></a>
+<span class="sourceLineNo">406</span><a name="line.406"></a>
+<span class="sourceLineNo">407</span>      // validate we can read all the data back<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      while (rr.nextKeyValue()) {<a name="line.408"></a>
+<span class="sourceLineNo">409</span>        byte[] row = rr.getCurrentKey().get();<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        verifyRowFromMap(rr.getCurrentKey(), rr.getCurrentValue());<a name="line.410"></a>
+<span class="sourceLineNo">411</span>        rowTracker.addRow(row);<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>      rr.close();<a name="line.414"></a>
+<span class="sourceLineNo">415</span>    }<a name="line.415"></a>
+<span class="sourceLineNo">416</span><a name="line.416"></a>
+<span class="sourceLineNo">417</span>    // validate all rows are seen<a name="line.417"></a>
+<span class="sourceLineNo">418</span>    rowTracker.validate();<a name="line.418"></a>
+<span class="sourceLineNo">419</span>  }<a name="line.419"></a>
+<span class="sourceLineNo">420</span><a name="line.420"></a>
+<span class="sourceLineNo">421</span>  @Override<a name="line.421"></a>
+<span class="sourceLineNo">422</span>  protected void testWithMapReduceImpl(HBaseTestingUtility util, TableName tableName,<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      String snapshotName, Path tableDir, int numRegions, int numSplitsPerRegion,<a name="line.423"></a>
+<span class="sourceLineNo">424</span>      int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.424"></a>
+<span class="sourceLineNo">425</span>    doTestWithMapReduce(util, tableName, snapshotName, getStartRow(), getEndRow(), tableDir,<a name="line.425"></a>
+<span class="sourceLineNo">426</span>      numRegions, numSplitsPerRegion, expectedNumSplits, shutdownCluster);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>  }<a name="line.427"></a>
+<span class="sourceLineNo">428</span><a name="line.428"></a>
+<span class="sourceLineNo">429</span>  // this is also called by the IntegrationTestTableSnapshotInputFormat<a name="line.429"></a>
+<span class="sourceLineNo">430</span>  public static void doTestWithMapReduce(HBaseTestingUtility util, TableName tableName,<a name="line.430"></a>
+<span class="sourceLineNo">431</span>      String snapshotName, byte[] startRow, byte[] endRow, Path tableDir, int numRegions,<a name="line.431"></a>
+<span class="sourceLineNo">432</span>      int numSplitsPerRegion, int expectedNumSplits, boolean shutdownCluster) throws Exception {<a name="line.432"></a>
+<span class="sourceLineNo">433</span><a name="line.433"></a>
+<span class="sourceLineNo">434</span>    LOG.info("testing with MapReduce");<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>    LOG.info("create the table and snapshot");<a name="line.436"></a>
+<span class="sourceLineNo">437</span>    createTableAndSnapshot(util, tableName, snapshotName, startRow, endRow, numRegions);<a name="line.437"></a>
+<span class="sourceLineNo">438</span><a name="line.438"></a>
+<span class="sourceLineNo">439</span>    if (shutdownCluster) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>      LOG.info("shutting down hbase cluster.");<a name="line.440"></a>
+<span class="sourceLineNo">441</span>      util.shutdownMiniHBaseCluster();<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>    try {<a name="line.444"></a>
+<span class="sourceLineNo">445</span>      // create the job<a name="line.445"></a>
+<span class="sourceLineNo">446</span>      Job job = new Job(util.getConfiguration());<a name="line.446"></a>
+<span class="sourceLineNo">447</span>      Scan scan = new Scan(startRow, endRow); // limit the scan<a name="line.447"></a>
+<span class="sourceLineNo">448</span><a name="line.448"></a>
+<span class="sourceLineNo">449</span>      job.setJarByClass(util.getClass());<a name="line.449"></a>
+<span class="sourceLineNo">450</span>      TableMapReduceUtil.addDependencyJarsForClasses(job.getConfiguration(),<a name="line.450"></a>
+<span class="sourceLineNo">451</span>              TestTableSnapshotInputFormat.class);<a name="line.451"></a>
+<span class="sourceLineNo">452</span><a name="line.452"></a>
+<span class="sourceLineNo">453</span>      if (numSplitsPerRegion &gt; 1) {<a name="line.453"></a>
+<span class="sourceLineNo">454</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.454"></a>
+<span class="sourceLineNo">455</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.455"></a>
+<span class="sourceLineNo">456</span>                NullWritable.class, job, true, tableDir, new RegionSplitter.UniformSplit(),<a name="line.456"></a>
+<span class="sourceLineNo">457</span>                numSplitsPerRegion);<a name="line.457"></a>
+<span class="sourceLineNo">458</span>      } else {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>        TableMapReduceUtil.initTableSnapshotMapperJob(snapshotName,<a name="line.459"></a>
+<span class="sourceLineNo">460</span>                scan, TestTableSnapshotMapper.class, ImmutableBytesWritable.class,<a name="line.460"></a>
+<span class="sourceLineNo">461</span>                NullWritable.class, job, true, tableDir);<a name="line.461"></a>
+<span class="sourceLineNo">462</span>      }<a name="line.462"></a>
+<span class="sourceLineNo">463</span><a name="line.463"></a>
+<span class="sourceLineNo">464</span>      job.setReducerClass(TestTableSnapshotInputFormat.TestTableSnapshotReducer.class);<a name="line.464"></a>
+<span class="sourceLineNo">465</span>      job.setNumReduceTasks(1);<a name="line.465"></a>
+<span class="sourceLineNo">466</span>      job.setOutputFormatClass(NullOutputFormat.class);<a name="line.466"></a>
+<span class="sourceLineNo">467</span><a name="line.467"></a>
+<span class="sourceLineNo">468</span>      Assert.assertTrue(job.waitForCompletion(true));<a name="line.468"></a>
+<span class="sourceLineNo">469</span>    } finally {<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      if (!shutdownCluster) {<a name="line.470"></a>
+<span class="sourceLineNo">471</span>        util.getAdmin().deleteSnapshot(snapshotName);<a name="line.471"></a>
+<span class="sourceLineNo">472</span>        util.deleteTable(tableName);<a name="line.472"></a>
+<span class="sourceLineNo">473</span>      }<a name="line.473"></a>
+<span class="sourceLineNo">474</span>    }<a name="line.474"></a>
+<span class="sourceLineNo">475</span>  }<a name="line.475"></a>
+<span class="sourceLineNo">476</span>}<a name="line.476"></a>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
new file mode 100644
index 0000000..60b1387
--- /dev/null
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
@@ -0,0 +1,191 @@
+<!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 or more contributor license<a name="line.2"></a>
+<span class="sourceLineNo">003</span> * agreements. See the NOTICE file distributed with this work for additional information regarding<a name="line.3"></a>
+<span class="sourceLineNo">004</span> * copyright ownership. The ASF licenses this file to you under the Apache License, Version 2.0 (the<a name="line.4"></a>
+<span class="sourceLineNo">005</span> * "License"); you may not use this file except in compliance with the License. You may obtain a<a name="line.5"></a>
+<span class="sourceLineNo">006</span> * copy of the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by applicable<a name="line.6"></a>
+<span class="sourceLineNo">007</span> * law or agreed to in writing, software distributed under the License is distributed on an "AS IS"<a name="line.7"></a>
+<span class="sourceLineNo">008</span> * BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License<a name="line.8"></a>
+<span class="sourceLineNo">009</span> * for the specific language governing permissions and limitations under the License.<a name="line.9"></a>
+<span class="sourceLineNo">010</span> */<a name="line.10"></a>
+<span class="sourceLineNo">011</span>package org.apache.hadoop.hbase.master;<a name="line.11"></a>
+<span class="sourceLineNo">012</span><a name="line.12"></a>
+<span class="sourceLineNo">013</span>import static org.junit.Assert.assertEquals;<a name="line.13"></a>
+<span class="sourceLineNo">014</span><a name="line.14"></a>
+<span class="sourceLineNo">015</span>import java.io.IOException;<a name="line.15"></a>
+<span class="sourceLineNo">016</span>import java.util.HashMap;<a name="line.16"></a>
+<span class="sourceLineNo">017</span>import java.util.List;<a name="line.17"></a>
+<span class="sourceLineNo">018</span><a name="line.18"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.conf.Configuration;<a name="line.19"></a>
+<span class="sourceLineNo">020</span>import org.apache.hadoop.hbase.HBaseClassTestRule;<a name="line.20"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseTestingUtility;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>import org.apache.hadoop.hbase.MiniHBaseCluster;<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>import org.apache.hadoop.hbase.testclassification.MasterTests;<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.testclassification.MediumTests;<a name="line.27"></a>
+<span class="sourceLineNo">028</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.28"></a>
+<span class="sourceLineNo">029</span>import org.apache.zookeeper.KeeperException;<a name="line.29"></a>
+<span class="sourceLineNo">030</span>import org.junit.AfterClass;<a name="line.30"></a>
+<span class="sourceLineNo">031</span>import org.junit.BeforeClass;<a name="line.31"></a>
+<span class="sourceLineNo">032</span>import org.junit.ClassRule;<a name="line.32"></a>
+<span class="sourceLineNo">033</span>import org.junit.Test;<a name="line.33"></a>
+<span class="sourceLineNo">034</span>import org.junit.experimental.categories.Category;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>import org.slf4j.Logger;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>import org.slf4j.LoggerFactory;<a name="line.36"></a>
+<span class="sourceLineNo">037</span><a name="line.37"></a>
+<span class="sourceLineNo">038</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.38"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.ClusterStatusProtos;<a name="line.39"></a>
+<span class="sourceLineNo">040</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.RegionServerStatusProtos;<a name="line.40"></a>
+<span class="sourceLineNo">041</span><a name="line.41"></a>
+<span class="sourceLineNo">042</span>@Category({ MasterTests.class, MediumTests.class })<a name="line.42"></a>
+<span class="sourceLineNo">043</span>public class TestGetReplicationLoad {<a name="line.43"></a>
+<span class="sourceLineNo">044</span>  @ClassRule<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  public static final HBaseClassTestRule CLASS_RULE =<a name="line.45"></a>
+<span class="sourceLineNo">046</span>      HBaseClassTestRule.forClass(TestGetReplicationLoad.class);<a name="line.46"></a>
+<span class="sourceLineNo">047</span><a name="line.47"></a>
+<span class="sourceLineNo">048</span>  private static final Logger LOG = LoggerFactory.getLogger(TestGetReplicationLoad.class);<a name="line.48"></a>
+<span class="sourceLineNo">049</span><a name="line.49"></a>
+<span class="sourceLineNo">050</span>  private static MiniHBaseCluster cluster;<a name="line.50"></a>
+<span class="sourceLineNo">051</span>  private static HMaster master;<a name="line.51"></a>
+<span class="sourceLineNo">052</span>  private static HBaseTestingUtility TEST_UTIL;<a name="line.52"></a>
+<span class="sourceLineNo">053</span><a name="line.53"></a>
+<span class="sourceLineNo">054</span>  public static class MyMaster extends HMaster {<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    public MyMaster(Configuration conf) throws IOException, KeeperException, InterruptedException {<a name="line.55"></a>
+<span class="sourceLineNo">056</span>      super(conf);<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>    @Override<a name="line.59"></a>
+<span class="sourceLineNo">060</span>    protected void tryRegionServerReport(long reportStartTime, long reportEndTime) {<a name="line.60"></a>
+<span class="sourceLineNo">061</span>      // do nothing<a name="line.61"></a>
+<span class="sourceLineNo">062</span>    }<a name="line.62"></a>
+<span class="sourceLineNo">063</span>  }<a name="line.63"></a>
+<span class="sourceLineNo">064</span><a name="line.64"></a>
+<span class="sourceLineNo">065</span>  @BeforeClass<a name="line.65"></a>
+<span class="sourceLineNo">066</span>  public static void startCluster() throws Exception {<a name="line.66"></a>
+<span class="sourceLineNo">067</span>    LOG.info("Starting cluster");<a name="line.67"></a>
+<span class="sourceLineNo">068</span>    TEST_UTIL = new HBaseTestingUtility();<a name="line.68"></a>
+<span class="sourceLineNo">069</span>    TEST_UTIL.startMiniCluster(1, 1, 1, null, TestMasterMetrics.MyMaster.class, null);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    cluster = TEST_UTIL.getHBaseCluster();<a name="line.70"></a>
+<span class="sourceLineNo">071</span>    LOG.info("Waiting for active/ready master");<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    cluster.waitForActiveAndReadyMaster();<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    master = cluster.getMaster();<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  }<a name="line.74"></a>
+<span class="sourceLineNo">075</span><a name="line.75"></a>
+<span class="sourceLineNo">076</span>  @AfterClass<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  public static void after() throws Exception {<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    if (TEST_UTIL != null) {<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      TEST_UTIL.shutdownMiniCluster();<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    }<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  }<a name="line.81"></a>
+<span class="sourceLineNo">082</span><a name="line.82"></a>
+<span class="sourceLineNo">083</span>  @Test<a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public void testGetReplicationMetrics() throws Exception {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    String peer1 = "test1", peer2 = "test2";<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    long ageOfLastShippedOp = 2, replicationLag = 3, timeStampOfLastShippedOp = 4;<a name="line.86"></a>
+<span class="sourceLineNo">087</span>    int sizeOfLogQueue = 5;<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    RegionServerStatusProtos.RegionServerReportRequest.Builder request =<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        RegionServerStatusProtos.RegionServerReportRequest.newBuilder();<a name="line.89"></a>
+<span class="sourceLineNo">090</span>    ServerName serverName = cluster.getMaster(0).getServerName();<a name="line.90"></a>
+<span class="sourceLineNo">091</span>    request.setServer(ProtobufUtil.toServerName(serverName));<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    ClusterStatusProtos.ReplicationLoadSource rload1 = ClusterStatusProtos.ReplicationLoadSource<a name="line.92"></a>
+<span class="sourceLineNo">093</span>        .newBuilder().setPeerID(peer1).setAgeOfLastShippedOp(ageOfLastShippedOp)<a name="line.93"></a>
+<span class="sourceLineNo">094</span>        .setReplicationLag(replicationLag).setTimeStampOfLastShippedOp(timeStampOfLastShippedOp)<a name="line.94"></a>
+<span class="sourceLineNo">095</span>        .setSizeOfLogQueue(sizeOfLogQueue).build();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    ClusterStatusProtos.ReplicationLoadSource rload2 =<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        ClusterStatusProtos.ReplicationLoadSource.newBuilder().setPeerID(peer2)<a name="line.97"></a>
+<span class="sourceLineNo">098</span>            .setAgeOfLastShippedOp(ageOfLastShippedOp + 1).setReplicationLag(replicationLag + 1)<a name="line.98"></a>
+<span class="sourceLineNo">099</span>            .setTimeStampOfLastShippedOp(timeStampOfLastShippedOp + 1)<a name="line.99"></a>
+<span class="sourceLineNo">100</span>            .setSizeOfLogQueue(sizeOfLogQueue + 1).build();<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    ClusterStatusProtos.ServerLoad sl = ClusterStatusProtos.ServerLoad.newBuilder()<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        .addReplLoadSource(rload1).addReplLoadSource(rload2).build();<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    request.setLoad(sl);<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    master.getReplicationPeerManager().addPeer(peer1,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      ReplicationPeerConfig.newBuilder().setClusterKey("test").build(), true);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>    master.getReplicationPeerManager().addPeer(peer2,<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      ReplicationPeerConfig.newBuilder().setClusterKey("test").build(), true);<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    master.getMasterRpcServices().regionServerReport(null, request.build());<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    HashMap&lt;String, List&lt;Pair&lt;ServerName, ReplicationLoadSource&gt;&gt;&gt; replicationLoad =<a name="line.109"></a>
+<span class="sourceLineNo">110</span>        master.getReplicationLoad(new ServerName[] { serverName });<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    assertEquals("peer size ", 2, replicationLoad.size());<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    assertEquals("load size ", 1, replicationLoad.get(peer1).size());<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    assertEquals("log queue size of peer1", sizeOfLogQueue,<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      replicationLoad.get(peer1).get(0).getSecond().getSizeOfLogQueue());<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    assertEquals("replication lag of peer2", replicationLag + 1,<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      replicationLoad.get(peer2).get(0).getSecond().getReplicationLag());<a name="line.116"></a>
+<span class="sourceLineNo">117</span>    master.stopMaster();<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>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+</pre>
+</div>
+</body>
+</html>


[07/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
new file mode 100644
index 0000000..15d637f
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html
@@ -0,0 +1,420 @@
+<!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>TestGetReplicationLoad (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="TestGetReplicationLoad (Apache HBase 3.0.0-SNAPSHOT Test API)";
+        }
+    }
+    catch(err) {
+    }
+//-->
+var methods = {"i0":9,"i1":9,"i2":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/TestGetReplicationLoad.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/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.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</div>
+<h2 title="Class TestGetReplicationLoad" class="title">Class TestGetReplicationLoad</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.master.TestGetReplicationLoad</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/master/TestGetReplicationLoad.html#line.43">TestGetReplicationLoad</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">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Nested Class Summary table, listing nested classes, and an explanation">
+<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Class and Description</th>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>static class&nbsp;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></span></code>&nbsp;</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>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/master/TestGetReplicationLoad.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static <a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#cluster">cluster</a></span></code>&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><code>private static org.slf4j.Logger</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#LOG">LOG</a></span></code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static org.apache.hadoop.hbase.master.HMaster</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#master">master</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#TEST_UTIL">TEST_UTIL</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/master/TestGetReplicationLoad.html#TestGetReplicationLoad--">TestGetReplicationLoad</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/master/TestGetReplicationLoad.html#after--">after</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/master/TestGetReplicationLoad.html#startCluster--">startCluster</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/master/TestGetReplicationLoad.html#testGetReplicationMetrics--">testGetReplicationMetrics</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="CLASS_RULE">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>CLASS_RULE</h4>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseClassTestRule.html" title="class in org.apache.hadoop.hbase">HBaseClassTestRule</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.45">CLASS_RULE</a></pre>
+</li>
+</ul>
+<a name="LOG">
+<!--   -->
+</a>
+<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/TestGetReplicationLoad.html#line.48">LOG</a></pre>
+</li>
+</ul>
+<a name="cluster">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>cluster</h4>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/MiniHBaseCluster.html" title="class in org.apache.hadoop.hbase">MiniHBaseCluster</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.50">cluster</a></pre>
+</li>
+</ul>
+<a name="master">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>master</h4>
+<pre>private static&nbsp;org.apache.hadoop.hbase.master.HMaster <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.51">master</a></pre>
+</li>
+</ul>
+<a name="TEST_UTIL">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TEST_UTIL</h4>
+<pre>private static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.52">TEST_UTIL</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="TestGetReplicationLoad--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>TestGetReplicationLoad</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.43">TestGetReplicationLoad</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="startCluster--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>startCluster</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.66">startCluster</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="after--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>after</h4>
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.77">after</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="testGetReplicationMetrics--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>testGetReplicationMetrics</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.84">testGetReplicationMetrics</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/TestGetReplicationLoad.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/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.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/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html
index 7be6f99..3181a35 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestHMasterCommandLine.html
@@ -49,7 +49,7 @@ var activeTableTab = "activeTableTab";
 </div>
 <div class="subNav">
 <ul class="navList">
-<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
@@ -280,7 +280,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/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
 <li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 0818a62..7a09a1c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html
@@ -231,7 +231,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaServ
 ice, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, i
 nitClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 d10a429..22de759 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initializeZKBasedSyst
 emTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, i
 nitializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.MyMaster.html
new file mode 100644
index 0000000..7530ac6
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.MyMaster.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.TestGetReplicationLoad.MyMaster (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.master.TestGetReplicationLoad.MyMaster (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/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">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/class-use/TestGetReplicationLoad.MyMaster.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.MyMaster.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.TestGetReplicationLoad.MyMaster" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.TestGetReplicationLoad.MyMaster</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.master.TestGetReplicationLoad.MyMaster</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/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">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/class-use/TestGetReplicationLoad.MyMaster.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.MyMaster.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/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.html b/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.html
new file mode 100644
index 0000000..bf1cbbc
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/class-use/TestGetReplicationLoad.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.TestGetReplicationLoad (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.master.TestGetReplicationLoad (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/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">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/class-use/TestGetReplicationLoad.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.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.TestGetReplicationLoad" class="title">Uses of Class<br>org.apache.hadoop.hbase.master.TestGetReplicationLoad</h2>
+</div>
+<div class="classUseContainer">No usage of org.apache.hadoop.hbase.master.TestGetReplicationLoad</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/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">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/class-use/TestGetReplicationLoad.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.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/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/package-frame.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/package-frame.html b/testdevapidocs/org/apache/hadoop/hbase/master/package-frame.html
index f43252d..16bb048 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/package-frame.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/package-frame.html
@@ -39,6 +39,8 @@
 <li><a href="TestDLSFSHLog.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestDLSFSHLog</a></li>
 <li><a href="TestGetInfoPort.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetInfoPort</a></li>
 <li><a href="TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetLastFlushedSequenceId</a></li>
+<li><a href="TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad</a></li>
+<li><a href="TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestGetReplicationLoad.MyMaster</a></li>
 <li><a href="TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestHMasterCommandLine</a></li>
 <li><a href="TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestHMasterRPCException</a></li>
 <li><a href="TestMaster.html" title="class in org.apache.hadoop.hbase.master" target="classFrame">TestMaster</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/package-summary.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/package-summary.html b/testdevapidocs/org/apache/hadoop/hbase/master/package-summary.html
index e83b799..0b5f1df 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/package-summary.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/package-summary.html
@@ -198,6 +198,14 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="altColor">
+<td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad.MyMaster</a></td>
+<td class="colLast">&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master">TestHMasterCommandLine</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/package-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/package-tree.html b/testdevapidocs/org/apache/hadoop/hbase/master/package-tree.html
index 3bde501..1fbe498 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/package-tree.html
@@ -93,6 +93,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.HMaster (implements org.apache.hadoop.hbase.master.MasterServices)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad.MyMaster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMasterMetrics.MyMaster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestShutdownBackupMaster.MockHMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestShutdownBackupMaster.MockHMaster</span></a></li>
 </ul>
@@ -152,6 +153,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestDeadServer.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestDeadServer</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestGetInfoPort.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetInfoPort</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetLastFlushedSequenceId</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestHMasterCommandLine</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterRPCException.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestHMasterRPCException</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="../../../../../org/apache/hadoop/hbase/master/TestMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMaster</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 0c3e416..fd878e3 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -576,15 +576,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/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.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/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/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/IntegrationTestDDLMasterFailover.ACTION.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">IntegrationTestDDLMasterFailover.ACTION</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.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/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/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/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/ScanPerformanceEvaluation.ScanCounter.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">ScanPerformanceEvaluation.ScanCounter</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/RESTApiClusterManager.Service.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">RESTApiClusterManager.Service</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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/eab0a960/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 4dfd45b..3845d2c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegi
 onServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, li
 stDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 a41c1f1..987734e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/TestSplitTransactionOnCluster.MyMaster.html
@@ -230,7 +230,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegi
 onServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCopr
 ocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, li
 stDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 8cf9a53..69c42bd 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/regionserver/package-tree.html
@@ -660,11 +660,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/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/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/DataBlockEncodingTool.Manipulation.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">DataBlockEncodingTool.Manipulation</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/TestAtomicOperation.TestStep.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestAtomicOperation.TestStep</span></a></li>
 <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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 1dbc0b3..bf98b2e 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/replication/TestReplicationProcedureRetry.MockHMaster.html
@@ -270,7 +270,7 @@ extends org.apache.hadoop.hbase.master.HMaster</pre>
 <!--   -->
 </a>
 <h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
-<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationPeerConfig, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServer
 s, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockManager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessor
 Host, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getReplicationLoad, getReplicationPeerConfig, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, initClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecomm
 issionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 cc06fe6..532d67b 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/wal/package-tree.html
@@ -139,8 +139,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.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/TestWALSplit.Corruptions.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">TestWALSplit.Corruptions</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/FaultyFSLog.FailureType.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">FaultyFSLog.FailureType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.wal.<a href="../../../../../org/apache/hadoop/hbase/wal/IOTestProvider.AllowedOperations.html" title="enum in org.apache.hadoop.hbase.wal"><span class="typeNameLink">IOTestProvider.AllowedOperations</span></a></li>
 </ul>
 </li>


[20/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
index bada433..468124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
@@ -299,116 +299,119 @@
 <span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
 <span class="sourceLineNo">292</span>        }<a name="line.292"></a>
 <span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        } else {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      case FAILED_OPEN:<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        handleFailure(env, regionNode);<a name="line.305"></a>
+<span class="sourceLineNo">294</span>          // Don't bother logging if openSeqNum == 0<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          if (openSeqNum != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.296"></a>
+<span class="sourceLineNo">297</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        } else {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.305"></a>
 <span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      default:<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<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>  /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      aborted.set(true);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this.forceNewPlan = true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    this.targetServer = null;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    regionNode.offline();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    // this method because it checks for OPENING first.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      final RegionStateNode regionNode) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        this + "; " + regionNode.toShortString());<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    return retries &gt;= max;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Override<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      final IOException exception) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    handleFailure(env, regionNode);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    return true;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    super.toStringClassDetails(sb);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionStateNode node =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    if (node == null) return null;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    return node.getRegionLocation();<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>  @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * 'Env'(?).<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        return -1;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        return +1;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        return -1;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        return +1;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>}<a name="line.403"></a>
+<span class="sourceLineNo">307</span>      case FAILED_OPEN:<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        handleFailure(env, regionNode);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        break;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      default:<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.311"></a>
+<span class="sourceLineNo">312</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      aborted.set(true);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    this.forceNewPlan = true;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    this.targetServer = null;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    regionNode.offline();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // this method because it checks for OPENING first.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      final RegionStateNode regionNode) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        this + "; " + regionNode.toShortString());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return retries &gt;= max;<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>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  @Override<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      final IOException exception) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    handleFailure(env, regionNode);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return true;<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>  @Override<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    super.toStringClassDetails(sb);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    RegionStateNode node =<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (node == null) return null;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return node.getRegionLocation();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  }<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * 'Env'(?).<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    @Override<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        return -1;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        return +1;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        return -1;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        return +1;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index bada433..468124c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -299,116 +299,119 @@
 <span class="sourceLineNo">291</span>              " transition openSeqNum=" + openSeqNum + ", " + regionNode);<a name="line.291"></a>
 <span class="sourceLineNo">292</span>        }<a name="line.292"></a>
 <span class="sourceLineNo">293</span>        if (openSeqNum &lt; regionNode.getOpenSeqNum()) {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>          LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.294"></a>
-<span class="sourceLineNo">295</span>              " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.295"></a>
-<span class="sourceLineNo">296</span>        } else {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        }<a name="line.298"></a>
-<span class="sourceLineNo">299</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.299"></a>
-<span class="sourceLineNo">300</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.300"></a>
-<span class="sourceLineNo">301</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.302"></a>
-<span class="sourceLineNo">303</span>        break;<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      case FAILED_OPEN:<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        handleFailure(env, regionNode);<a name="line.305"></a>
+<span class="sourceLineNo">294</span>          // Don't bother logging if openSeqNum == 0<a name="line.294"></a>
+<span class="sourceLineNo">295</span>          if (openSeqNum != 0) {<a name="line.295"></a>
+<span class="sourceLineNo">296</span>            LOG.warn("Skipping update of open seqnum with " + openSeqNum +<a name="line.296"></a>
+<span class="sourceLineNo">297</span>                " because current seqnum=" + regionNode.getOpenSeqNum());<a name="line.297"></a>
+<span class="sourceLineNo">298</span>          }<a name="line.298"></a>
+<span class="sourceLineNo">299</span>        } else {<a name="line.299"></a>
+<span class="sourceLineNo">300</span>          regionNode.setOpenSeqNum(openSeqNum);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>        }<a name="line.301"></a>
+<span class="sourceLineNo">302</span>        // Leave the state here as OPENING for now. We set it to OPEN in<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // REGION_TRANSITION_FINISH section where we do a bunch of checks.<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        // regionNode.setState(RegionState.State.OPEN, RegionState.State.OPENING);<a name="line.304"></a>
+<span class="sourceLineNo">305</span>        setTransitionState(RegionTransitionState.REGION_TRANSITION_FINISH);<a name="line.305"></a>
 <span class="sourceLineNo">306</span>        break;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>      default:<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.308"></a>
-<span class="sourceLineNo">309</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.309"></a>
-<span class="sourceLineNo">310</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<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>  /**<a name="line.314"></a>
-<span class="sourceLineNo">315</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.315"></a>
-<span class="sourceLineNo">316</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.316"></a>
-<span class="sourceLineNo">317</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.317"></a>
-<span class="sourceLineNo">318</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.318"></a>
-<span class="sourceLineNo">319</span>   */<a name="line.319"></a>
-<span class="sourceLineNo">320</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      aborted.set(true);<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    }<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    this.forceNewPlan = true;<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    this.targetServer = null;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>    regionNode.offline();<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    // this method because it checks for OPENING first.<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  }<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.333"></a>
-<span class="sourceLineNo">334</span>      final RegionStateNode regionNode) {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.338"></a>
-<span class="sourceLineNo">339</span>        this + "; " + regionNode.toShortString());<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    return retries &gt;= max;<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  }<a name="line.341"></a>
-<span class="sourceLineNo">342</span><a name="line.342"></a>
-<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.346"></a>
-<span class="sourceLineNo">347</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  }<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  @Override<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.351"></a>
-<span class="sourceLineNo">352</span>      final IOException exception) {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>    handleFailure(env, regionNode);<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    return true;<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  }<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  @Override<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span>    super.toStringClassDetails(sb);<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>    RegionStateNode node =<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    if (node == null) return null;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    return node.getRegionLocation();<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>  @Override<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<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>  /**<a name="line.376"></a>
-<span class="sourceLineNo">377</span>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.377"></a>
-<span class="sourceLineNo">378</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.378"></a>
-<span class="sourceLineNo">379</span>   * 'Env'(?).<a name="line.379"></a>
-<span class="sourceLineNo">380</span>   */<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    @Override<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        }<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        return -1;<a name="line.388"></a>
-<span class="sourceLineNo">389</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        return +1;<a name="line.390"></a>
-<span class="sourceLineNo">391</span>      }<a name="line.391"></a>
-<span class="sourceLineNo">392</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.393"></a>
-<span class="sourceLineNo">394</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        }<a name="line.395"></a>
-<span class="sourceLineNo">396</span>        return -1;<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.397"></a>
-<span class="sourceLineNo">398</span>        return +1;<a name="line.398"></a>
-<span class="sourceLineNo">399</span>      }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    }<a name="line.401"></a>
-<span class="sourceLineNo">402</span>  }<a name="line.402"></a>
-<span class="sourceLineNo">403</span>}<a name="line.403"></a>
+<span class="sourceLineNo">307</span>      case FAILED_OPEN:<a name="line.307"></a>
+<span class="sourceLineNo">308</span>        handleFailure(env, regionNode);<a name="line.308"></a>
+<span class="sourceLineNo">309</span>        break;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      default:<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        throw new UnexpectedStateException("Received report unexpected " + code +<a name="line.311"></a>
+<span class="sourceLineNo">312</span>            " transition openSeqNum=" + openSeqNum + ", " + regionNode.toShortString() +<a name="line.312"></a>
+<span class="sourceLineNo">313</span>            ", " + this + ", expected OPENED or FAILED_OPEN.");<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    }<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  }<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>  /**<a name="line.317"></a>
+<span class="sourceLineNo">318</span>   * Called when dispatch or subsequent OPEN request fail. Can be run by the<a name="line.318"></a>
+<span class="sourceLineNo">319</span>   * inline dispatch call or later by the ServerCrashProcedure. Our state is<a name="line.319"></a>
+<span class="sourceLineNo">320</span>   * generally OPENING. Cleanup and reset to OFFLINE and put our Procedure<a name="line.320"></a>
+<span class="sourceLineNo">321</span>   * State back to REGION_TRANSITION_QUEUE so the Assign starts over.<a name="line.321"></a>
+<span class="sourceLineNo">322</span>   */<a name="line.322"></a>
+<span class="sourceLineNo">323</span>  private void handleFailure(final MasterProcedureEnv env, final RegionStateNode regionNode) {<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    if (incrementAndCheckMaxAttempts(env, regionNode)) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>      aborted.set(true);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    this.forceNewPlan = true;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    this.targetServer = null;<a name="line.328"></a>
+<span class="sourceLineNo">329</span>    regionNode.offline();<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // We were moved to OPENING state before dispatch. Undo. It is safe to call<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    // this method because it checks for OPENING first.<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    env.getAssignmentManager().undoRegionAsOpening(regionNode);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    setTransitionState(RegionTransitionState.REGION_TRANSITION_QUEUE);<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>  private boolean incrementAndCheckMaxAttempts(final MasterProcedureEnv env,<a name="line.336"></a>
+<span class="sourceLineNo">337</span>      final RegionStateNode regionNode) {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    final int retries = env.getAssignmentManager().getRegionStates().<a name="line.338"></a>
+<span class="sourceLineNo">339</span>        addToFailedOpen(regionNode).incrementAndGetRetries();<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    int max = env.getAssignmentManager().getAssignMaxAttempts();<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    LOG.info("Retry=" + retries + " of max=" + max + "; " +<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        this + "; " + regionNode.toShortString());<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    return retries &gt;= max;<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>  @Override<a name="line.346"></a>
+<span class="sourceLineNo">347</span>  public RemoteOperation remoteCallBuild(final MasterProcedureEnv env, final ServerName serverName) {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>    assert serverName.equals(getRegionState(env).getRegionLocation());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    return new RegionOpenOperation(this, getRegionInfo(),<a name="line.349"></a>
+<span class="sourceLineNo">350</span>        env.getAssignmentManager().getFavoredNodes(getRegionInfo()), false);<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>  @Override<a name="line.353"></a>
+<span class="sourceLineNo">354</span>  protected boolean remoteCallFailed(final MasterProcedureEnv env, final RegionStateNode regionNode,<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      final IOException exception) {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    handleFailure(env, regionNode);<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    return true;<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>  @Override<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  public void toStringClassDetails(StringBuilder sb) {<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    super.toStringClassDetails(sb);<a name="line.362"></a>
+<span class="sourceLineNo">363</span>    if (this.targetServer != null) sb.append(", target=").append(this.targetServer);<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>  @Override<a name="line.366"></a>
+<span class="sourceLineNo">367</span>  public ServerName getServer(final MasterProcedureEnv env) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    RegionStateNode node =<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        env.getAssignmentManager().getRegionStates().getRegionStateNode(this.getRegionInfo());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>    if (node == null) return null;<a name="line.370"></a>
+<span class="sourceLineNo">371</span>    return node.getRegionLocation();<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>  @Override<a name="line.374"></a>
+<span class="sourceLineNo">375</span>  protected ProcedureMetrics getProcedureMetrics(MasterProcedureEnv env) {<a name="line.375"></a>
+<span class="sourceLineNo">376</span>    return env.getAssignmentManager().getAssignmentManagerMetrics().getAssignProcMetrics();<a name="line.376"></a>
+<span class="sourceLineNo">377</span>  }<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>   * Sort AssignProcedures such that meta and system assigns come first before user-space assigns.<a name="line.380"></a>
+<span class="sourceLineNo">381</span>   * Have to do it this way w/ distinct Comparator because Procedure is already Comparable on<a name="line.381"></a>
+<span class="sourceLineNo">382</span>   * 'Env'(?).<a name="line.382"></a>
+<span class="sourceLineNo">383</span>   */<a name="line.383"></a>
+<span class="sourceLineNo">384</span>  public static class CompareAssignProcedure implements Comparator&lt;AssignProcedure&gt; {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>    @Override<a name="line.385"></a>
+<span class="sourceLineNo">386</span>    public int compare(AssignProcedure left, AssignProcedure right) {<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      if (left.getRegionInfo().isMetaRegion()) {<a name="line.387"></a>
+<span class="sourceLineNo">388</span>        if (right.getRegionInfo().isMetaRegion()) {<a name="line.388"></a>
+<span class="sourceLineNo">389</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.389"></a>
+<span class="sourceLineNo">390</span>        }<a name="line.390"></a>
+<span class="sourceLineNo">391</span>        return -1;<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      } else if (right.getRegionInfo().isMetaRegion()) {<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        return +1;<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      if (left.getRegionInfo().getTable().isSystemTable()) {<a name="line.395"></a>
+<span class="sourceLineNo">396</span>        if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.396"></a>
+<span class="sourceLineNo">397</span>          return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<a name="line.397"></a>
+<span class="sourceLineNo">398</span>        }<a name="line.398"></a>
+<span class="sourceLineNo">399</span>        return -1;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      } else if (right.getRegionInfo().getTable().isSystemTable()) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        return +1;<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      }<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      return RegionInfo.COMPARATOR.compare(left.getRegionInfo(), right.getRegionInfo());<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
index d654af2..9d01454 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
@@ -228,113 +228,111 @@
 <span class="sourceLineNo">220</span>        tableDescriptor = this.services.getTableDescriptors().get(tableName);<a name="line.220"></a>
 <span class="sourceLineNo">221</span>      }<a name="line.221"></a>
 <span class="sourceLineNo">222</span>    } catch (FileNotFoundException fnfe) {<a name="line.222"></a>
-<span class="sourceLineNo">223</span>      LOG.debug("FileNotFoundException during getTableDescriptors." + " Current table name = "<a name="line.223"></a>
-<span class="sourceLineNo">224</span>          + tableName, fnfe);<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>    return tableDescriptor;<a name="line.227"></a>
-<span class="sourceLineNo">228</span>  }<a name="line.228"></a>
-<span class="sourceLineNo">229</span><a name="line.229"></a>
-<span class="sourceLineNo">230</span>  /**<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * Map hostname to ServerName, The output ServerName list will have the same<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * order as input hosts.<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   *<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   * @param hosts the list of hosts<a name="line.234"></a>
-<span class="sourceLineNo">235</span>   * @return ServerName list<a name="line.235"></a>
-<span class="sourceLineNo">236</span>   */<a name="line.236"></a>
-<span class="sourceLineNo">237</span>  protected List&lt;ServerName&gt; mapHostNameToServerName(List&lt;String&gt; hosts) {<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    if (hosts == null || status == null) {<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      if (hosts == null) {<a name="line.239"></a>
-<span class="sourceLineNo">240</span>        LOG.warn("RegionLocationFinder top hosts is null");<a name="line.240"></a>
-<span class="sourceLineNo">241</span>      }<a name="line.241"></a>
-<span class="sourceLineNo">242</span>      return Lists.newArrayList();<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    }<a name="line.243"></a>
-<span class="sourceLineNo">244</span><a name="line.244"></a>
-<span class="sourceLineNo">245</span>    List&lt;ServerName&gt; topServerNames = new ArrayList&lt;&gt;();<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    Collection&lt;ServerName&gt; regionServers = status.getLiveServerMetrics().keySet();<a name="line.246"></a>
-<span class="sourceLineNo">247</span><a name="line.247"></a>
-<span class="sourceLineNo">248</span>    // create a mapping from hostname to ServerName for fast lookup<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    HashMap&lt;String, List&lt;ServerName&gt;&gt; hostToServerName = new HashMap&lt;&gt;();<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    for (ServerName sn : regionServers) {<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      String host = sn.getHostname();<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      if (!hostToServerName.containsKey(host)) {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        hostToServerName.put(host, new ArrayList&lt;&gt;());<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      }<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      hostToServerName.get(host).add(sn);<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    }<a name="line.256"></a>
-<span class="sourceLineNo">257</span><a name="line.257"></a>
-<span class="sourceLineNo">258</span>    for (String host : hosts) {<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      if (!hostToServerName.containsKey(host)) {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>        continue;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      for (ServerName sn : hostToServerName.get(host)) {<a name="line.262"></a>
-<span class="sourceLineNo">263</span>        // it is possible that HDFS is up ( thus host is valid ),<a name="line.263"></a>
-<span class="sourceLineNo">264</span>        // but RS is down ( thus sn is null )<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        if (sn != null) {<a name="line.265"></a>
-<span class="sourceLineNo">266</span>          topServerNames.add(sn);<a name="line.266"></a>
-<span class="sourceLineNo">267</span>        }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>    }<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    return topServerNames;<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>  public HDFSBlocksDistribution getBlockDistribution(RegionInfo hri) {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    HDFSBlocksDistribution blockDistbn = null;<a name="line.274"></a>
-<span class="sourceLineNo">275</span>    try {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      if (cache.asMap().containsKey(hri)) {<a name="line.276"></a>
-<span class="sourceLineNo">277</span>        blockDistbn = cache.get(hri);<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        return blockDistbn;<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>        LOG.debug("HDFSBlocksDistribution not found in cache for region "<a name="line.280"></a>
-<span class="sourceLineNo">281</span>            + hri.getRegionNameAsString());<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        blockDistbn = internalGetTopBlockLocation(hri);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>        cache.put(hri, blockDistbn);<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        return blockDistbn;<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>    } catch (ExecutionException e) {<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      LOG.warn("Error while fetching cache entry ", e);<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      blockDistbn = internalGetTopBlockLocation(hri);<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      cache.put(hri, blockDistbn);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>      return blockDistbn;<a name="line.290"></a>
-<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
-<span class="sourceLineNo">293</span><a name="line.293"></a>
-<span class="sourceLineNo">294</span>  private ListenableFuture&lt;HDFSBlocksDistribution&gt; asyncGetBlockDistribution(<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      RegionInfo hri) {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    try {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>      return loader.reload(hri, EMPTY_BLOCK_DISTRIBUTION);<a name="line.297"></a>
-<span class="sourceLineNo">298</span>    } catch (Exception e) {<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      return Futures.immediateFuture(EMPTY_BLOCK_DISTRIBUTION);<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>  public void refreshAndWait(Collection&lt;RegionInfo&gt; hris) {<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    ArrayList&lt;ListenableFuture&lt;HDFSBlocksDistribution&gt;&gt; regionLocationFutures = new ArrayList&lt;&gt;(hris.size());<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    for (RegionInfo hregionInfo : hris) {<a name="line.305"></a>
-<span class="sourceLineNo">306</span>      regionLocationFutures.add(asyncGetBlockDistribution(hregionInfo));<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    }<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    int index = 0;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>    for (RegionInfo hregionInfo : hris) {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      ListenableFuture&lt;HDFSBlocksDistribution&gt; future = regionLocationFutures<a name="line.310"></a>
-<span class="sourceLineNo">311</span>          .get(index);<a name="line.311"></a>
-<span class="sourceLineNo">312</span>      try {<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        cache.put(hregionInfo, future.get());<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      } catch (InterruptedException ite) {<a name="line.314"></a>
-<span class="sourceLineNo">315</span>        Thread.currentThread().interrupt();<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      } catch (ExecutionException ee) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>        LOG.debug(<a name="line.317"></a>
-<span class="sourceLineNo">318</span>            "ExecutionException during HDFSBlocksDistribution computation. for region = "<a name="line.318"></a>
-<span class="sourceLineNo">319</span>                + hregionInfo.getEncodedName(), ee);<a name="line.319"></a>
-<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      index++;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  }<a name="line.323"></a>
-<span class="sourceLineNo">324</span><a name="line.324"></a>
-<span class="sourceLineNo">325</span>  // For test<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  LoadingCache&lt;RegionInfo, HDFSBlocksDistribution&gt; getCache() {<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    return cache;<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">223</span>      LOG.debug("tableName={}", tableName, fnfe);<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span><a name="line.225"></a>
+<span class="sourceLineNo">226</span>    return tableDescriptor;<a name="line.226"></a>
+<span class="sourceLineNo">227</span>  }<a name="line.227"></a>
+<span class="sourceLineNo">228</span><a name="line.228"></a>
+<span class="sourceLineNo">229</span>  /**<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * Map hostname to ServerName, The output ServerName list will have the same<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * order as input hosts.<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   *<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * @param hosts the list of hosts<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @return ServerName list<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   */<a name="line.235"></a>
+<span class="sourceLineNo">236</span>  protected List&lt;ServerName&gt; mapHostNameToServerName(List&lt;String&gt; hosts) {<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    if (hosts == null || status == null) {<a name="line.237"></a>
+<span class="sourceLineNo">238</span>      if (hosts == null) {<a name="line.238"></a>
+<span class="sourceLineNo">239</span>        LOG.warn("RegionLocationFinder top hosts is null");<a name="line.239"></a>
+<span class="sourceLineNo">240</span>      }<a name="line.240"></a>
+<span class="sourceLineNo">241</span>      return Lists.newArrayList();<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>    List&lt;ServerName&gt; topServerNames = new ArrayList&lt;&gt;();<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    Collection&lt;ServerName&gt; regionServers = status.getLiveServerMetrics().keySet();<a name="line.245"></a>
+<span class="sourceLineNo">246</span><a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // create a mapping from hostname to ServerName for fast lookup<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    HashMap&lt;String, List&lt;ServerName&gt;&gt; hostToServerName = new HashMap&lt;&gt;();<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    for (ServerName sn : regionServers) {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      String host = sn.getHostname();<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      if (!hostToServerName.containsKey(host)) {<a name="line.251"></a>
+<span class="sourceLineNo">252</span>        hostToServerName.put(host, new ArrayList&lt;&gt;());<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      }<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      hostToServerName.get(host).add(sn);<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span><a name="line.256"></a>
+<span class="sourceLineNo">257</span>    for (String host : hosts) {<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      if (!hostToServerName.containsKey(host)) {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        continue;<a name="line.259"></a>
+<span class="sourceLineNo">260</span>      }<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      for (ServerName sn : hostToServerName.get(host)) {<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        // it is possible that HDFS is up ( thus host is valid ),<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        // but RS is down ( thus sn is null )<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        if (sn != null) {<a name="line.264"></a>
+<span class="sourceLineNo">265</span>          topServerNames.add(sn);<a name="line.265"></a>
+<span class="sourceLineNo">266</span>        }<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    }<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    return topServerNames;<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>  public HDFSBlocksDistribution getBlockDistribution(RegionInfo hri) {<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    HDFSBlocksDistribution blockDistbn = null;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    try {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      if (cache.asMap().containsKey(hri)) {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        blockDistbn = cache.get(hri);<a name="line.276"></a>
+<span class="sourceLineNo">277</span>        return blockDistbn;<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      } else {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        LOG.trace("HDFSBlocksDistribution not found in cache for {}", hri.getRegionNameAsString());<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        blockDistbn = internalGetTopBlockLocation(hri);<a name="line.280"></a>
+<span class="sourceLineNo">281</span>        cache.put(hri, blockDistbn);<a name="line.281"></a>
+<span class="sourceLineNo">282</span>        return blockDistbn;<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
+<span class="sourceLineNo">284</span>    } catch (ExecutionException e) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      LOG.warn("Error while fetching cache entry ", e);<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      blockDistbn = internalGetTopBlockLocation(hri);<a name="line.286"></a>
+<span class="sourceLineNo">287</span>      cache.put(hri, blockDistbn);<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      return blockDistbn;<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>  private ListenableFuture&lt;HDFSBlocksDistribution&gt; asyncGetBlockDistribution(<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      RegionInfo hri) {<a name="line.293"></a>
+<span class="sourceLineNo">294</span>    try {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>      return loader.reload(hri, EMPTY_BLOCK_DISTRIBUTION);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    } catch (Exception e) {<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      return Futures.immediateFuture(EMPTY_BLOCK_DISTRIBUTION);<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>  public void refreshAndWait(Collection&lt;RegionInfo&gt; hris) {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    ArrayList&lt;ListenableFuture&lt;HDFSBlocksDistribution&gt;&gt; regionLocationFutures = new ArrayList&lt;&gt;(hris.size());<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    for (RegionInfo hregionInfo : hris) {<a name="line.303"></a>
+<span class="sourceLineNo">304</span>      regionLocationFutures.add(asyncGetBlockDistribution(hregionInfo));<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    int index = 0;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    for (RegionInfo hregionInfo : hris) {<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      ListenableFuture&lt;HDFSBlocksDistribution&gt; future = regionLocationFutures<a name="line.308"></a>
+<span class="sourceLineNo">309</span>          .get(index);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      try {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        cache.put(hregionInfo, future.get());<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      } catch (InterruptedException ite) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        Thread.currentThread().interrupt();<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      } catch (ExecutionException ee) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        LOG.debug(<a name="line.315"></a>
+<span class="sourceLineNo">316</span>            "ExecutionException during HDFSBlocksDistribution computation. for region = "<a name="line.316"></a>
+<span class="sourceLineNo">317</span>                + hregionInfo.getEncodedName(), ee);<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>      index++;<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>  // For test<a name="line.323"></a>
+<span class="sourceLineNo">324</span>  LoadingCache&lt;RegionInfo, HDFSBlocksDistribution&gt; getCache() {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    return cache;<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
+<span class="sourceLineNo">327</span>}<a name="line.327"></a>
 
 
 


[35/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 2758049..a312363 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":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":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":9,"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":9,"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":9,"i121":10,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"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":10,"i153":10,"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":9};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":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":10,"i32":10,"i33":10,"i34":9,"i35":10,"i36":10,"i37":10,"i38":10,"i39":10,"i40":10,"i41":10,"i42":10,"i43":9,"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":9,"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":9,"i122":10,"i123":10,"i124":10,"i125":10,"i126":10,"i127":10,"i128":10,"i129":10,"i130":10,"i131":10,"i132":10,"i133":10,"i134":9,"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":10,"i153":10,"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":9};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -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.240">HMaster</a>
+public class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.241">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
@@ -994,50 +994,54 @@ 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#getRemoteProcedure-long-">getRemoteProcedure</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
 <tr id="i97" class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+</tr>
+<tr id="i98" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</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;peerId)</code>
 <div class="block">Returns the configured ReplicationPeerConfig for the specified peer</div>
 </td>
 </tr>
-<tr id="i98" class="altColor">
+<tr id="i99" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication">ReplicationPeerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a></span>()</code>
 <div class="block">Returns the <a href="../../../../../org/apache/hadoop/hbase/master/replication/ReplicationPeerManager.html" title="class in org.apache.hadoop.hbase.master.replication"><code>ReplicationPeerManager</code></a>.</div>
 </td>
 </tr>
-<tr id="i99" class="rowColor">
+<tr id="i100" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i100" class="altColor">
+<tr id="i101" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i101" class="rowColor">
+<tr id="i102" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/snapshot/SnapshotManager.html" title="class in org.apache.hadoop.hbase.master.snapshot">SnapshotManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i102" class="altColor">
+<tr id="i103" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/SnapshotQuotaObserverChore.html" title="class in org.apache.hadoop.hbase.quotas">SnapshotQuotaObserverChore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i103" class="rowColor">
+<tr id="i104" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/quotas/SpaceQuotaSnapshotNotifier.html" title="interface in org.apache.hadoop.hbase.quotas">SpaceQuotaSnapshotNotifier</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i104" class="altColor">
+<tr id="i105" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master">SplitOrMergeTracker</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i105" class="rowColor">
+<tr id="i106" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i106" class="altColor">
+<tr id="i107" class="rowColor">
 <td class="colFirst"><code><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/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i107" class="rowColor">
+<tr id="i108" class="altColor">
 <td class="colFirst"><code>private <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors-java.util.List-java.lang.String-java.lang.String-java.util.List-boolean-">getTableDescriptors</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/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;htds,
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;namespace,
@@ -1045,7 +1049,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
                    <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;&nbsp;tableNameList,
                    boolean&nbsp;includeSysTables)</code>&nbsp;</td>
 </tr>
-<tr id="i108" class="altColor">
+<tr id="i109" class="rowColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     byte[]&nbsp;rowKey)</code>
@@ -1053,106 +1057,106 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  the given row.</div>
 </td>
 </tr>
-<tr id="i109" class="rowColor">
+<tr id="i110" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/master/TableStateManager.html" title="class in org.apache.hadoop.hbase.master">TableStateManager</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i110" class="altColor">
+<tr id="i111" 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/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>&nbsp;</td>
 </tr>
-<tr id="i111" class="rowColor">
+<tr id="i112" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/procedure2/store/wal/WALProcedureStore.html" title="class in org.apache.hadoop.hbase.procedure2.store.wal">WALProcedureStore</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i112" class="altColor">
+<tr id="i113" class="rowColor">
 <td class="colFirst"><code><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/HMaster.html#getZooKeeper--">getZooKeeper</a></span>()</code>
 <div class="block">Gets the ZooKeeper instance for this server.</div>
 </td>
 </tr>
-<tr id="i113" class="rowColor">
+<tr id="i114" class="altColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i114" class="altColor">
+<tr id="i115" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a></span>()</code>
 <div class="block">
  Initialize all ZK based system trackers.</div>
 </td>
 </tr>
-<tr id="i115" class="rowColor">
+<tr id="i116" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initMobCleaner--">initMobCleaner</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i116" class="altColor">
+<tr id="i117" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initQuotaManager--">initQuotaManager</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i117" class="rowColor">
+<tr id="i118" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a></span>()</code>
 <div class="block">Report whether this master is currently the active master or not.</div>
 </td>
 </tr>
-<tr id="i118" class="altColor">
+<tr id="i119" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a></span>()</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/LoadBalancerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>LoadBalancerTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i119" class="rowColor">
+<tr id="i120" class="altColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i120" class="altColor">
+<tr id="i121" class="rowColor">
 <td class="colFirst"><code>private static boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogTable-org.apache.hadoop.hbase.TableName-">isCatalogTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i121" class="rowColor">
+<tr id="i122" class="altColor">
 <td class="colFirst"><code>(package private) boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i122" class="altColor">
+<tr id="i123" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a></span>()</code>
 <div class="block">Report whether this master has completed with its initialization and is
  ready.</div>
 </td>
 </tr>
-<tr id="i123" class="rowColor">
+<tr id="i124" class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a></span>()</code>
 <div class="block">Report whether this master is in maintenance mode.</div>
 </td>
 </tr>
-<tr id="i124" class="altColor">
+<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/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a></span>()</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/zookeeper/RegionNormalizerTracker.html" title="class in org.apache.hadoop.hbase.zookeeper"><code>RegionNormalizerTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i125" class="rowColor">
+<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/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client">MasterSwitchType</a>&nbsp;switchType)</code>
 <div class="block">Queries the state of the <a href="../../../../../org/apache/hadoop/hbase/master/SplitOrMergeTracker.html" title="class in org.apache.hadoop.hbase.master"><code>SplitOrMergeTracker</code></a>.</div>
 </td>
 </tr>
-<tr id="i126" class="altColor">
+<tr id="i127" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a></span>()</code>
 <div class="block">List region servers marked as decommissioned (previously called 'draining') to not get regions
  assigned to them.</div>
 </td>
 </tr>
-<tr id="i127" class="rowColor">
+<tr id="i128" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerDescription.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerDescription</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</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;regex)</code>
 <div class="block">Return a list of replication peers.</div>
 </td>
 </tr>
-<tr id="i128" class="altColor">
+<tr id="i129" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</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;namespace,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1161,13 +1165,13 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table descriptors that match the specified request</div>
 </td>
 </tr>
-<tr id="i129" class="rowColor">
+<tr id="i130" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table descriptors by namespace</div>
 </td>
 </tr>
-<tr id="i130" class="altColor">
+<tr id="i131" class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</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;namespace,
               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;regex,
@@ -1175,24 +1179,24 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Returns the list of table names that match the specified request</div>
 </td>
 </tr>
-<tr id="i131" class="rowColor">
+<tr id="i132" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&gt;</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>
 <div class="block">Get list of table names by namespace</div>
 </td>
 </tr>
-<tr id="i132" class="altColor">
+<tr id="i133" class="rowColor">
 <td class="colFirst"><code>protected void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.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>
 <div class="block">For compatibility, if failed with regionserver credentials, try the master one</div>
 </td>
 </tr>
-<tr id="i133" class="rowColor">
+<tr id="i134" class="altColor">
 <td class="colFirst"><code>static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.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="i134" class="altColor">
+<tr id="i135" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>[]&nbsp;regionsToMerge,
             boolean&nbsp;forcible,
@@ -1201,7 +1205,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Merge regions in a table.</div>
 </td>
 </tr>
-<tr id="i135" class="rowColor">
+<tr id="i136" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
             <a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&nbsp;descriptor,
@@ -1210,7 +1214,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the column descriptor of an existing column in an existing table</div>
 </td>
 </tr>
-<tr id="i136" class="altColor">
+<tr id="i137" class="rowColor">
 <td class="colFirst"><code>(package private) long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a></span>(<a href="../../../../../org/apache/hadoop/hbase/NamespaceDescriptor.html" title="class in org.apache.hadoop.hbase">NamespaceDescriptor</a>&nbsp;newNsDescriptor,
                long&nbsp;nonceGroup,
@@ -1218,14 +1222,14 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify an existing Namespace.</div>
 </td>
 </tr>
-<tr id="i137" class="rowColor">
+<tr id="i138" class="altColor">
 <td class="colFirst"><code>private long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.master.HMaster.TableDescriptorGetter-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html" title="interface in org.apache.hadoop.hbase.master">HMaster.TableDescriptorGetter</a>&nbsp;newDescriptorGetter,
            long&nbsp;nonceGroup,
            long&nbsp;nonce)</code>&nbsp;</td>
 </tr>
-<tr id="i138" class="altColor">
+<tr id="i139" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
            <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;newDescriptor,
@@ -1234,22 +1238,22 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Modify the descriptor of an existing table</div>
 </td>
 </tr>
-<tr id="i139" class="rowColor">
+<tr id="i140" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a></span>(byte[]&nbsp;encodedRegionName,
     byte[]&nbsp;destServerName)</code>&nbsp;</td>
 </tr>
-<tr id="i140" class="altColor">
+<tr id="i141" class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a></span>()</code>
 <div class="block">Perform normalization of cluster (invoked by <a href="../../../../../org/apache/hadoop/hbase/master/normalizer/RegionNormalizerChore.html" title="class in org.apache.hadoop.hbase.master.normalizer"><code>RegionNormalizerChore</code></a>).</div>
 </td>
 </tr>
-<tr id="i141" class="rowColor">
+<tr id="i142" class="altColor">
 <td class="colFirst"><code>private int</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#putUpJettyServer--">putUpJettyServer</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i142" class="altColor">
+<tr id="i143" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</code>
@@ -1257,37 +1261,37 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
  assignments.</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/master/HMaster.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="i144" class="altColor">
+<tr id="i145" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a></span>(long&nbsp;procId)</code>&nbsp;</td>
 </tr>
-<tr id="i145" class="rowColor">
+<tr id="i146" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a></span>(long&nbsp;procId,
                      <a href="../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureException.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureException</a>&nbsp;error)</code>&nbsp;</td>
 </tr>
-<tr id="i146" class="altColor">
+<tr id="i147" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</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;peerId)</code>
 <div class="block">Removes a peer and stops the replication</div>
 </td>
 </tr>
-<tr id="i147" class="rowColor">
+<tr id="i148" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i148" class="altColor">
+<tr id="i149" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName)</code>&nbsp;</td>
 </tr>
-<tr id="i149" class="rowColor">
+<tr id="i150" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</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/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/ColumnFamilyDescriptor.html" title="interface in org.apache.hadoop.hbase.client">ColumnFamilyDescriptor</a>&gt;&nbsp;columns,
@@ -1295,43 +1299,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Requests mob compaction.</div>
 </td>
 </tr>
-<tr id="i150" class="altColor">
+<tr id="i151" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a></span>(org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription&nbsp;snapshotDesc,
                long&nbsp;nonceGroup,
                long&nbsp;nonce,
                boolean&nbsp;restoreAcl)</code>&nbsp;</td>
 </tr>
-<tr id="i151" class="rowColor">
+<tr id="i152" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#run--">run</a></span>()</code>
 <div class="block">The HRegionServer sticks in this loop until closed.</div>
 </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/master/HMaster.html#sanityCheckTableDescriptor-org.apache.hadoop.hbase.client.TableDescriptor-">sanityCheckTableDescriptor</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd)</code>
 <div class="block">Checks whether the table conforms to some sane limits, and configured
  values (compression, etc) work.</div>
 </td>
 </tr>
-<tr id="i153" class="rowColor">
+<tr id="i154" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a></span>(boolean&nbsp;b)</code>
 <div class="block">Switch for the background CatalogJanitor thread.</div>
 </td>
 </tr>
-<tr id="i154" class="altColor">
+<tr id="i155" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a></span>(boolean&nbsp;isInitialized)</code>&nbsp;</td>
 </tr>
-<tr id="i155" class="rowColor">
+<tr id="i156" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a></span>()</code>
 <div class="block">Shutdown the cluster.</div>
 </td>
 </tr>
-<tr id="i156" class="altColor">
+<tr id="i157" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
            byte[]&nbsp;splitRow,
@@ -1340,43 +1344,43 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Split a region.</div>
 </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/master/HMaster.html#startActiveMasterManager-int-">startActiveMasterManager</a></span>(int&nbsp;infoPort)</code>&nbsp;</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/master/HMaster.html#startProcedureExecutor--">startProcedureExecutor</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i159" class="rowColor">
+<tr id="i160" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#startServiceThreads--">startServiceThreads</a></span>()</code>&nbsp;</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/master/HMaster.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="i161" class="rowColor">
+<tr id="i162" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopChores--">stopChores</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i162" class="altColor">
+<tr id="i163" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i163" class="rowColor">
+<tr id="i164" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopProcedureExecutor--">stopProcedureExecutor</a></span>()</code>&nbsp;</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/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a></span>()</code>
 <div class="block">Wait on all threads to finish.</div>
 </td>
 </tr>
-<tr id="i165" class="rowColor">
+<tr id="i166" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
              boolean&nbsp;preserveSplits,
@@ -1385,32 +1389,32 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <div class="block">Truncate a table</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/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</code>
 <div class="block">Adds the <code>MasterSpaceQuotaObserver</code> to the list of configured Master observers to
  automatically remove space quotas for a table when that table is deleted.</div>
 </td>
 </tr>
-<tr id="i167" class="rowColor">
+<tr id="i168" class="altColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</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;peerId,
                            <a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationPeerConfig.html" title="class in org.apache.hadoop.hbase.replication">ReplicationPeerConfig</a>&nbsp;peerConfig)</code>
 <div class="block">Update the peerConfig for the specified peer</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/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></span>()</code>
 <div class="block">If configured to put regions on active master,
  wait till a backup master becomes active.</div>
 </td>
 </tr>
-<tr id="i169" class="rowColor">
+<tr id="i170" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForRegionServers-org.apache.hadoop.hbase.monitoring.MonitoredTask-">waitForRegionServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/monitoring/MonitoredTask.html" title="interface in org.apache.hadoop.hbase.monitoring">MonitoredTask</a>&nbsp;status)</code>&nbsp;</td>
 </tr>
-<tr id="i170" class="altColor">
+<tr id="i171" class="rowColor">
 <td class="colFirst"><code>private static void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#warnOrThrowExceptionForFailure-boolean-java.lang.String-java.lang.String-java.lang.Exception-">warnOrThrowExceptionForFailure</a></span>(boolean&nbsp;logWarn,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;confKey,
@@ -1487,7 +1491,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.241">LOG</a></pre>
+<pre>private static&nbsp;org.slf4j.Logger <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.242">LOG</a></pre>
 </li>
 </ul>
 <a name="MASTER">
@@ -1496,7 +1500,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.297">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.298">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>
@@ -1509,7 +1513,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.300">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.301">activeMasterManager</a></pre>
 </li>
 </ul>
 <a name="regionServerTracker">
@@ -1518,7 +1522,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <ul class="blockList">
 <li class="blockList">
 <h4>regionServerTracker</h4>
-<pre>private&nbsp;<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.302">regionServerTracker</a></pre>
+<pre>private&nbsp;<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.303">regionServerTracker</a></pre>
 </li>
 </ul>
 <a name="drainingServerTracker">
@@ -1527,7 +1531,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.304">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.305">drainingServerTracker</a></pre>
 </li>
 </ul>
 <a name="loadBalancerTracker">
@@ -1536,7 +1540,7 @@ 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.306">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.307">loadBalancerTracker</a></pre>
 </li>
 </ul>
 <a name="metaLocationSyncer">
@@ -1545,7 +1549,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <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.308">metaLocationSyncer</a></pre>
+<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.309">metaLocationSyncer</a></pre>
 </li>
 </ul>
 <a name="masterAddressSyncer">
@@ -1554,7 +1558,7 @@ implements <a href="../../../../../org/apache/hadoop/hbase/master/MasterServices
 <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.310">masterAddressSyncer</a></pre>
+<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.311">masterAddressSyncer</a></pre>
 </li>
 </ul>
 <a name="splitOrMergeTracker">
@@ -1563,7 +1567,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.313">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.314">splitOrMergeTracker</a></pre>
 </li>
 </ul>
 <a name="regionNormalizerTracker">
@@ -1572,7 +1576,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.316">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.317">regionNormalizerTracker</a></pre>
 </li>
 </ul>
 <a name="maintenanceModeTracker">
@@ -1581,7 +1585,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.319">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.320">maintenanceModeTracker</a></pre>
 </li>
 </ul>
 <a name="clusterSchemaService">
@@ -1590,7 +1594,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.321">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.322">clusterSchemaService</a></pre>
 </li>
 </ul>
 <a name="HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS">
@@ -1599,7 +1603,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.323">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.324">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>
@@ -1612,7 +1616,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.325">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.326">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>
@@ -1625,7 +1629,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.328">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.329">metricsMaster</a></pre>
 </li>
 </ul>
 <a name="fileSystemManager">
@@ -1634,7 +1638,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.330">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.331">fileSystemManager</a></pre>
 </li>
 </ul>
 <a name="walManager">
@@ -1643,7 +1647,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.331">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.332">walManager</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -1652,7 +1656,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.334">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.335">serverManager</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -1661,7 +1665,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.337">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.338">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="replicationPeerManager">
@@ -1670,7 +1674,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.340">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.341">replicationPeerManager</a></pre>
 </li>
 </ul>
 <a name="rsFatals">
@@ -1679,7 +1683,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.345">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.346">rsFatals</a></pre>
 </li>
 </ul>
 <a name="activeMaster">
@@ -1688,7 +1692,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.348">activeMaster</a></pre>
+<pre>private volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.349">activeMaster</a></pre>
 </li>
 </ul>
 <a name="initialized">
@@ -1697,7 +1701,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.351">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.352">initialized</a></pre>
 </li>
 </ul>
 <a name="serviceStarted">
@@ -1706,7 +1710,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.355">serviceStarted</a></pre>
+<pre>volatile&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.356">serviceStarted</a></pre>
 </li>
 </ul>
 <a name="maxBlancingTime">
@@ -1715,7 +1719,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.358">maxBlancingTime</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.359">maxBlancingTime</a></pre>
 </li>
 </ul>
 <a name="maxRitPercent">
@@ -1724,7 +1728,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.360">maxRitPercent</a></pre>
+<pre>private final&nbsp;double <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.361">maxRitPercent</a></pre>
 </li>
 </ul>
 <a name="lockManager">
@@ -1733,7 +1737,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.362">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.363">lockManager</a></pre>
 </li>
 </ul>
 <a name="balancer">
@@ -1742,7 +1746,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.364">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.365">balancer</a></pre>
 </li>
 </ul>
 <a name="normalizer">
@@ -1751,7 +1755,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.365">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.366">normalizer</a></pre>
 </li>
 </ul>
 <a name="balancerChore">
@@ -1760,7 +1764,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.366">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.367">balancerChore</a></pre>
 </li>
 </ul>
 <a name="normalizerChore">
@@ -1769,7 +1773,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.367">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.368">normalizerChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusChore">
@@ -1778,7 +1782,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.368">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.369">clusterStatusChore</a></pre>
 </li>
 </ul>
 <a name="clusterStatusPublisherChore">
@@ -1787,7 +1791,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.369">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.370">clusterStatusPublisherChore</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorChore">
@@ -1796,7 +1800,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.371">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.372">catalogJanitorChore</a></pre>
 </li>
 </ul>
 <a name="logCleaner">
@@ -1805,7 +1809,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.372">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.373">logCleaner</a></pre>
 </li>
 </ul>
 <a name="hfileCleaner">
@@ -1814,7 +1818,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.373">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.374">hfileCleaner</a></pre>
 </li>
 </ul>
 <a name="replicationBarrierCleaner">
@@ -1823,7 +1827,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.374">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.375">replicationBarrierCleaner</a></pre>
 </li>
 </ul>
 <a name="expiredMobFileCleanerChore">
@@ -1832,7 +1836,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.375">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.376">expiredMobFileCleanerChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactChore">
@@ -1841,7 +1845,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.376">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.377">mobCompactChore</a></pre>
 </li>
 </ul>
 <a name="mobCompactThread">
@@ -1850,7 +1854,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.377">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.378">mobCompactThread</a></pre>
 </li>
 </ul>
 <a name="mobCompactionLock">
@@ -1859,7 +1863,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.379">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.380">mobCompactionLock</a></pre>
 </li>
 </ul>
 <a name="mobCompactionStates">
@@ -1868,7 +1872,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.382">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.383">mobCompactionStates</a></pre>
 </li>
 </ul>
 <a name="cpHost">
@@ -1877,7 +1881,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.384">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.385">cpHost</a></pre>
 </li>
 </ul>
 <a name="preLoadTableDescriptors">
@@ -1886,7 +1890,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.386">preLoadTableDescriptors</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.387">preLoadTableDescriptors</a></pre>
 </li>
 </ul>
 <a name="masterActiveTime">
@@ -1895,7 +1899,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.389">masterActiveTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.390">masterActiveTime</a></pre>
 </li>
 </ul>
 <a name="masterFinishedInitializationTime">
@@ -1904,7 +1908,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.392">masterFinishedInitializationTime</a></pre>
+<pre>private&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.393">masterFinishedInitializationTime</a></pre>
 </li>
 </ul>
 <a name="masterCheckCompression">
@@ -1913,7 +1917,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.395">masterCheckCompression</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.396">masterCheckCompression</a></pre>
 </li>
 </ul>
 <a name="masterCheckEncryption">
@@ -1922,7 +1926,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.398">masterCheckEncryption</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.399">masterCheckEncryption</a></pre>
 </li>
 </ul>
 <a name="coprocessorServiceHandlers">
@@ -1931,7 +1935,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.400">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.401">coprocessorServiceHandlers</a></pre>
 </li>
 </ul>
 <a name="snapshotManager">
@@ -1940,7 +1944,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.403">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.404">snapshotManager</a></pre>
 </li>
 </ul>
 <a name="mpmHost">
@@ -1949,7 +1953,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.405">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.406">mpmHost</a></pre>
 </li>
 </ul>
 <a name="quotaManager">
@@ -1958,7 +1962,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.408">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.409">quotaManager</a></pre>
 </li>
 </ul>
 <a name="spaceQuotaSnapshotNotifier">
@@ -1967,7 +1971,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.409">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.410">spaceQuotaSnapshotNotifier</a></pre>
 

<TRUNCATED>

[24/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 546d2b6..3b8b827 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
@@ -180,3553 +180,3580 @@
 <span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
 <span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * run the cluster.  All others park themselves in their constructor until<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> *<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
-<span class="sourceLineNo">237</span> */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
-<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * true, do nothing otherwise.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    private final HMaster master;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private final long timeout;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final boolean haltOnTimeout;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    InitializationMonitor(HMaster master) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      super("MasterInitializationMonitor");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.master = master;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.setDaemon(true);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public void run() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          Thread.sleep(timeout);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          if (master.isInitialized()) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            if (haltOnTimeout) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              System.exit(-1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException ie) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  //instance into web context.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public static final String MASTER = "master";<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Manager and zk listener for master election<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Region server tracker<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private RegionServerTracker regionServerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Draining region server tracker<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // Tracker for load balancer state<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Tracker for split and merge state<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for region normalizer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  //Tracker for master maintenance mode setting<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // Metrics for the HMaster<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  final MetricsMaster metricsMaster;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  // file system manager for the master FS operations<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private MasterFileSystem fileSystemManager;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private MasterWalManager walManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // server manager to deal with region server info<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private volatile ServerManager serverManager;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // manager of assignment nodes in zookeeper<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AssignmentManager assignmentManager;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // manager of replication<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // buffer for "fatal error" notices from region servers<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // in the cluster. This is only used for assisting<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // operations/debugging.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  // flag set after we become the active master (used for testing)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private volatile boolean activeMaster = false;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // flag set after we complete initialization once active<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // flag set after master services are started,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // initialization may have not completed yet.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  volatile boolean serviceStarted = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // Maximum time we should run balancer for<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final int maxBlancingTime;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // Maximum percent of regions in transition when balancing<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private final double maxRitPercent;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private final LockManager lockManager = new LockManager(this);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private LoadBalancer balancer;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private RegionNormalizer normalizer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private BalancerChore balancerChore;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private RegionNormalizerChore normalizerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ClusterStatusChore clusterStatusChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  CatalogJanitor catalogJanitorChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private LogCleaner logCleaner;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private HFileCleaner hfileCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private MobCompactionChore mobCompactChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  // used to synchronize the mobCompactionStates<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  // save the information of mob compactions in tables.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  MasterCoprocessorHost cpHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private final boolean preLoadTableDescriptors;<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  // Time stamps for when a hmaster became active<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private long masterActiveTime;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private long masterFinishedInitializationTime;<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  private final boolean masterCheckCompression;<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  //should we check encryption settings at master side, default true<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean masterCheckEncryption;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  // monitor for snapshot of hbase tables<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  SnapshotManager snapshotManager;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // monitor for distributed procedures<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private MasterProcedureManagerHost mpmHost;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private volatile MasterQuotaManager quotaManager;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private QuotaObserverChore quotaObserverChore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private WALProcedureStore procedureStore;<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // handle table states<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private TableStateManager tableStateManager;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private long splitPlanCount;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private long mergePlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /* Handle favored nodes information */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private FavoredNodesManager favoredNodesManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private Server masterJettyServer;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static class RedirectServlet extends HttpServlet {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    private final int regionServerInfoPort;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.434"></a>
-<span class="sourceLineNo">435</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>     */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       regionServerInfoPort = infoServer.getPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       regionServerHostname = hostname;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public void doGet(HttpServletRequest request,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectHost = regionServerHostname;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if(redirectHost == null) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        redirectHost = request.getServerName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "to an appropriate hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String redirectUrl = request.getScheme() + "://"<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        + request.getRequestURI();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      response.sendRedirect(redirectUrl);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<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>   * Initializes the HMaster. The steps are as follows:<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;ol&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * &lt;/ol&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Remaining steps of initialization occur in<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * the master becomes the active one.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public HMaster(final Configuration conf)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      throws IOException, KeeperException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    super(conf);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    TraceUtil.initTracer(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Disable usage of meta replicas in the master<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      decorateMasterConfiguration(this.conf);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // should we check encryption settings at master side, default true<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // preload table descriptor at startup<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>      // Do we publish the status?<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              ClusterStatusPublisher.Publisher.class);<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (shouldPublish) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        if (publisherClass == null) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.530"></a>
-<span class="sourceLineNo">531</span>              " is not set - not publishing status");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        } else {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } else {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        this.activeMasterManager = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    } catch (Throwable t) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      // cause of failed startup is lost.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      LOG.error("Failed construction of Master", t);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      throw t;<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><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  // block in here until then.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void run() {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        Threads.setDaemonThreadRunning(new Thread(() -&gt; {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>            int infoPort = putUpJettyServer();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            startActiveMasterManager(infoPort);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          } catch (Throwable t) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            // Make sure we log the exception.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>            String error = "Failed to become Active Master";<a name="line.569"></a>
-<span class="sourceLineNo">570</span>            LOG.error(error, t);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>            // Abort should have been called already.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            if (!isAborted()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>              abort(error, t);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>            }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        }));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // the super run call will do this for us.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      super.run();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      if (this.clusterSchemaService != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // If on way out, then we are no longer active master.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        this.clusterSchemaService.stopAsync();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        try {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          this.clusterSchemaService.awaitTerminated(<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        } catch (TimeoutException te) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<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>  // return the actual infoPort, -1 means disable info server.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  private int putUpJettyServer() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<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>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    // -1 is for disabling info server, so no redirecting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if(infoPort == infoServer.getPort()) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return infoPort;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String msg =<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.614"></a>
-<span class="sourceLineNo">615</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              + "hbase.master.info.bindAddress";<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      LOG.error(msg);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      throw new IOException(msg);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // a second entire stack here.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    masterJettyServer = new Server();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    connector.setHost(addr);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    connector.setPort(infoPort);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    masterJettyServer.addConnector(connector);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    final String redirectHostname =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        StringUtils.isBlank(useThisHostnameInstead) ? null : useThisHostnameInstead;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>    final RedirectServlet redirect = new RedirectServlet(infoServer, redirectHostname);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    final WebAppContext context = new WebAppContext(null, "/", null, null, null, null, WebAppContext.NO_SESSIONS);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    context.addServlet(new ServletHolder(redirect), "/*");<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    context.setServer(masterJettyServer);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      masterJettyServer.start();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    } catch (Exception e) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throw new IOException("Failed to start redirecting jetty server", e);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    return connector.getLocalPort();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  }<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  @Override<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return builder -&gt; builder.setRegionReplication(conf.getInt(HConstants.META_REPLICAS_NUM, HConstants.DEFAULT_META_REPLICA_NUM));<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>   * For compatibility, if failed with regionserver credentials, try the master one<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  @Override<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    try {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      super.login(user, host);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } catch (IOException ie) {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      user.login("hbase.master.keytab.file",<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        "hbase.master.kerberos.principal", host);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>  /**<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * If configured to put regions on active master,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * wait till a backup master becomes active.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   * Otherwise, loop till the server is stopped or aborted.<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  @Override<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  protected void waitForMasterActive(){<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(conf);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    while (!(tablesOnMaster &amp;&amp; activeMaster) &amp;&amp; !isStopped() &amp;&amp; !isAborted()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      sleeper.sleep();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    }<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>  @VisibleForTesting<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public MasterRpcServices getMasterRpcServices() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    return (MasterRpcServices)rpcServices;<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>  public boolean balanceSwitch(final boolean b) throws IOException {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return getMasterRpcServices().switchBalancer(b, BalanceSwitchMode.ASYNC);<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>  @Override<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  protected String getProcessName() {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return MASTER;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
-<span class="sourceLineNo">692</span>  protected boolean canCreateBaseZNode() {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return true;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Override<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  protected boolean canUpdateTableDescriptor() {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    return true;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>  @Override<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return new MasterRpcServices(this);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  protected void configureInfoServer() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    infoServer.addServlet("master-status", "/master-status", MasterStatusServlet.class);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    infoServer.setAttribute(MASTER, this);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (LoadBalancer.isTablesOnMaster(conf)) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      super.configureInfoServer();<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><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return MasterDumpServlet.class;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public MetricsMaster getMasterMetrics() {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    return metricsMaster;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  /**<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * Initialize all ZK based system trackers. But do not include {@link RegionServerTracker}, it<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * should have already been initialized along with {@link ServerManager}.<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * &lt;/p&gt;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * &lt;p&gt;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * Will be overridden in tests.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * &lt;/p&gt;<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @VisibleForTesting<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  protected void initializeZKBasedSystemTrackers()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      throws IOException, InterruptedException, KeeperException, ReplicationException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    this.normalizer = RegionNormalizerFactory.getRegionNormalizer(conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    this.normalizer.setMasterServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    this.normalizer.setMasterRpcServices((MasterRpcServices)rpcServices);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    this.loadBalancerTracker = new LoadBalancerTracker(zooKeeper, this);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    this.loadBalancerTracker.start();<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>    this.regionNormalizerTracker = new RegionNormalizerTracker(zooKeeper, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    this.regionNormalizerTracker.start();<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    this.splitOrMergeTracker = new SplitOrMergeTracker(zooKeeper, conf, this);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    this.splitOrMergeTracker.start();<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>    this.replicationPeerManager = ReplicationPeerManager.create(zooKeeper, conf);<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this, this.serverManager);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    this.drainingServerTracker.start();<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    this.maintenanceModeTracker = new MasterMaintenanceModeTracker(zooKeeper);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    this.maintenanceModeTracker.start();<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String clientQuorumServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    boolean clientZkObserverMode = conf.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    if (clientQuorumServers != null &amp;&amp; !clientZkObserverMode) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      // we need to take care of the ZK information synchronization<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      // if given client ZK are not observer nodes<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      ZKWatcher clientZkWatcher = new ZKWatcher(conf,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>          getProcessName() + ":" + rpcServices.getSocketAddress().getPort() + "-clientZK", this,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          false, true);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.metaLocationSyncer = new MetaLocationSyncer(zooKeeper, clientZkWatcher, this);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      this.metaLocationSyncer.start();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      this.masterAddressSyncer = new MasterAddressSyncer(zooKeeper, clientZkWatcher, this);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      this.masterAddressSyncer.start();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      // set cluster id is a one-go effort<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      ZKClusterId.setClusterId(clientZkWatcher, fileSystemManager.getClusterId());<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // Set the cluster as up.  If new RSs, they'll be waiting on this before<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    // going ahead with their startup.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    boolean wasUp = this.clusterStatusTracker.isClusterUp();<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    if (!wasUp) this.clusterStatusTracker.setClusterUp();<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    LOG.info("Active/primary master=" + this.serverName +<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        ", sessionid=0x" +<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +<a name="line.782"></a>
-<span class="sourceLineNo">783</span>        ", setting cluster-up flag (Was=" + wasUp + ")");<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>    // create/initialize the snapshot manager and other procedure managers<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    this.snapshotManager = new SnapshotManager();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    this.mpmHost = new MasterProcedureManagerHost();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    this.mpmHost.register(this.snapshotManager);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    this.mpmHost.register(new MasterFlushTableProcedureManager());<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    this.mpmHost.loadProcedures(conf);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    this.mpmHost.initialize(this, this.metricsMaster);<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * Finish initialization of HMaster after becoming the primary master.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * &lt;p/&gt;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * The startup order is a bit complicated but very important, do not change it unless you know<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * what you are doing.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;ol&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;Initialize file system based components - file system manager, wal manager, table<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * descriptors, etc&lt;/li&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * &lt;li&gt;Publish cluster id&lt;/li&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * &lt;li&gt;Here comes the most complicated part - initialize server manager, assignment manager and<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * region server tracker<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * &lt;ol type='i'&gt;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * &lt;li&gt;Create server manager&lt;/li&gt;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * &lt;li&gt;Create procedure executor, load the procedures, but do not start workers. We will start it<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * later after we finish scheduling SCPs to avoid scheduling duplicated SCPs for the same<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * server&lt;/li&gt;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * &lt;li&gt;Create assignment manager and start it, load the meta region state, but do not load data<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * from meta region&lt;/li&gt;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * &lt;li&gt;Start region server tracker, construct the online servers set and find out dead servers and<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * schedule SCP for them. The online servers will be constructed by scanning zk, and we will also<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * scan the wal directory to find out possible live region servers, and the differences between<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * these two sets are the dead servers&lt;/li&gt;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * &lt;/ol&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * &lt;/li&gt;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * &lt;li&gt;If this is a new deploy, schedule a InitMetaProcedure to initialize meta&lt;/li&gt;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * &lt;li&gt;Start necessary service threads - balancer, catalog janior, executor services, and also the<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * procedure executor, etc. Notice that the balancer must be created first as assignment manager<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * may use it when assigning regions.&lt;/li&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * &lt;li&gt;Wait for meta to be initialized if necesssary, start table state manager.&lt;/li&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * &lt;li&gt;Wait for enough region servers to check-in&lt;/li&gt;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * &lt;li&gt;Let assignment manager load data from meta and construct region states&lt;/li&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * &lt;li&gt;Start all other things such as chore services, etc&lt;/li&gt;<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * &lt;/ol&gt;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * &lt;p/&gt;<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * Notice that now we will not schedule a special procedure to make meta online(unless the first<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * time where meta has not been created yet), we will rely on SCP to bring meta online.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  private void finishActiveMasterInitialization(MonitoredTask status) throws IOException,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          InterruptedException, KeeperException, ReplicationException {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Thread zombieDetector = new Thread(new InitializationMonitor(this),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        "ActiveMasterInitializationMonitor-" + System.currentTimeMillis());<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    zombieDetector.setDaemon(true);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    zombieDetector.start();<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>     * We are active master now... go initialize components we need to run.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    status.setStatus("Initializing Master file system");<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.masterActiveTime = System.currentTimeMillis();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    // Initialize the chunkCreator<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    initializeMemStoreChunkCreator();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    this.walManager = new MasterWalManager(this);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>    // enable table descriptors cache<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    this.tableDescriptors.setCacheOn();<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // warm-up HTDs cache on master initialization<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (preLoadTableDescriptors) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      status.setStatus("Pre-loading table descriptors");<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.tableDescriptors.getAll();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Publish cluster ID; set it in Master too. The superclass RegionServer does this later but<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // only after it has checked in with the Master. At least a few tests ask Master for clusterId<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    // before it has called its run method and before RegionServer has done the reportForDuty.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    ClusterId clusterId = fileSystemManager.getClusterId();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    status.setStatus("Publishing Cluster ID " + clusterId + " in ZooKeeper");<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    this.clusterId = clusterId.toString();<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.zookeeper.KeeperException;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.Server;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.Logger;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.slf4j.LoggerFactory;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * run the cluster.  All others park themselves in their constructor until<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> *<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> *<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.235"></a>
+<span class="sourceLineNo">236</span> *<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @see org.apache.zookeeper.Watcher<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>@SuppressWarnings("deprecation")<a name="line.240"></a>
+<span class="sourceLineNo">241</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private static class InitializationMonitor extends HasThread {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.254"></a>
+<span class="sourceLineNo">255</span>     * true, do nothing otherwise.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public static final boolean HALT_DEFAULT = false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private final HMaster master;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private final long timeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private final boolean haltOnTimeout;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    InitializationMonitor(HMaster master) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      super("MasterInitializationMonitor");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.master = master;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.setDaemon(true);<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>    public void run() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Thread.sleep(timeout);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (master.isInitialized()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.281"></a>
+<span class="sourceLineNo">282</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            if (haltOnTimeout) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  //instance into web context.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String MASTER = "master";<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  // Manager and zk listener for master election<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private final ActiveMasterManager activeMasterManager;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  // Region server tracker<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private RegionServerTracker regionServerTracker;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Draining region server tracker<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private DrainingServerTracker drainingServerTracker;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // Tracker for load balancer state<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // Tracker for split and merge state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Tracker for region normalizer state<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  //Tracker for master maintenance mode setting<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private ClusterSchemaService clusterSchemaService;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    "hbase.master.wait.on.service.seconds";<a name="line.325"></a>
+<span class="sourceLineNo

<TRUNCATED>

[36/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html b/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
index 52a85e0..16d3818 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.793">ServerRpcConnection.ByteBuffByteInput</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.786">ServerRpcConnection.ByteBuffByteInput</a>
 extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 </li>
 </ul>
@@ -243,7 +243,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>buf</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.795">buf</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.788">buf</a></pre>
 </li>
 </ul>
 <a name="offset">
@@ -252,7 +252,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>offset</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.796">offset</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.789">offset</a></pre>
 </li>
 </ul>
 <a name="length">
@@ -261,7 +261,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>length</h4>
-<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.797">length</a></pre>
+<pre>private&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.790">length</a></pre>
 </li>
 </ul>
 </li>
@@ -278,7 +278,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ByteBuffByteInput</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.799">ByteBuffByteInput</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf,
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.792">ByteBuffByteInput</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf,
                   int&nbsp;offset,
                   int&nbsp;length)</pre>
 </li>
@@ -297,7 +297,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>read</h4>
-<pre>public&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.806">read</a>(int&nbsp;offset)</pre>
+<pre>public&nbsp;byte&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.799">read</a>(int&nbsp;offset)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>read</code>&nbsp;in class&nbsp;<code>org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</code></dd>
@@ -310,7 +310,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAbsoluteOffset</h4>
-<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.810">getAbsoluteOffset</a>(int&nbsp;offset)</pre>
+<pre>private&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.803">getAbsoluteOffset</a>(int&nbsp;offset)</pre>
 </li>
 </ul>
 <a name="read-int-byte:A-int-int-">
@@ -319,7 +319,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>read</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.815">read</a>(int&nbsp;offset,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.808">read</a>(int&nbsp;offset,
                 byte[]&nbsp;out,
                 int&nbsp;outOffset,
                 int&nbsp;len)</pre>
@@ -335,7 +335,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>read</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.821">read</a>(int&nbsp;offset,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.814">read</a>(int&nbsp;offset,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;out)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -349,7 +349,7 @@ extends org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>size</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.828">size</a>()</pre>
+<pre>public&nbsp;int&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.ByteBuffByteInput.html#line.821">size</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>size</code>&nbsp;in class&nbsp;<code>org.apache.hbase.thirdparty.com.google.protobuf.ByteInput</code></dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html b/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
index d701dd0..3273b68 100644
--- a/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
+++ b/devapidocs/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html
@@ -866,7 +866,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processUnwrappedData</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.421">processUnwrappedData</a>(byte[]&nbsp;inBuf)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.415">processUnwrappedData</a>(byte[]&nbsp;inBuf)
                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                   <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -882,7 +882,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processOneRpc</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.458">processOneRpc</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.452">processOneRpc</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                           <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -898,7 +898,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>authorizeConnection</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.475">authorizeConnection</a>()
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.469">authorizeConnection</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>
@@ -912,7 +912,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processConnectionHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.499">processConnectionHeader</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.493">processConnectionHeader</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
                               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>
@@ -926,7 +926,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>responseConnectionHeader</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.570">responseConnectionHeader</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeaderResponse.Builder&nbsp;chrBuilder)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.563">responseConnectionHeader</a>(org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.ConnectionHeaderResponse.Builder&nbsp;chrBuilder)
                                throws <a href="../../../../../org/apache/hadoop/hbase/ipc/FatalConnectionException.html" title="class in org.apache.hadoop.hbase.ipc">FatalConnectionException</a></pre>
 <div class="block">Send the response for connection header</div>
 <dl>
@@ -941,7 +941,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>doRespond</h4>
-<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.594">doRespond</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcResponse.html" title="interface in org.apache.hadoop.hbase.ipc">RpcResponse</a>&nbsp;resp)
+<pre>protected abstract&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.587">doRespond</a>(<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcResponse.html" title="interface in org.apache.hadoop.hbase.ipc">RpcResponse</a>&nbsp;resp)
                            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>
@@ -955,7 +955,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processRequest</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.603">processRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.596">processRequest</a>(<a href="../../../../../org/apache/hadoop/hbase/nio/ByteBuff.html" title="class in org.apache.hadoop.hbase.nio">ByteBuff</a>&nbsp;buf)
                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -974,7 +974,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>getErrorResponse</h4>
-<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcResponse.html" title="interface in org.apache.hadoop.hbase.ipc">RpcResponse</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.720">getErrorResponse</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
+<pre>protected final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/RpcResponse.html" title="interface in org.apache.hadoop.hbase.ipc">RpcResponse</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.713">getErrorResponse</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)
                                       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>
@@ -989,7 +989,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>doBadPreambleHandling</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.729">doBadPreambleHandling</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.722">doBadPreambleHandling</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg)
                             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>
@@ -1003,7 +1003,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>doBadPreambleHandling</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.733">doBadPreambleHandling</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.726">doBadPreambleHandling</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;msg,
                                    <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a>&nbsp;e)
                             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>
@@ -1018,7 +1018,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>processPreamble</h4>
-<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.738">processPreamble</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;preambleBuffer)
+<pre>protected final&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.731">processPreamble</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/nio/ByteBuffer.html?is-external=true" title="class or interface in java.nio">ByteBuffer</a>&nbsp;preambleBuffer)
                                  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>
@@ -1032,7 +1032,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockList">
 <li class="blockList">
 <h4>isConnectionOpen</h4>
-<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.787">isConnectionOpen</a>()</pre>
+<pre>public abstract&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.780">isConnectionOpen</a>()</pre>
 </li>
 </ul>
 <a name="createCall-int-org.apache.hbase.thirdparty.com.google.protobuf.BlockingService-org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor-org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader-org.apache.hbase.thirdparty.com.google.protobuf.Message-org.apache.hadoop.hbase.CellScanner-long-java.net.InetAddress-int-org.apache.hadoop.hbase.ipc.RpcServer.CallCleanup-">
@@ -1041,7 +1041,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/io/Closeable.
 <ul class="blockListLast">
 <li class="blockList">
 <h4>createCall</h4>
-<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/ServerCall.html" title="class in org.apache.hadoop.hbase.ipc">ServerCall</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.789">createCall</a>(int&nbsp;id,
+<pre>public abstract&nbsp;<a href="../../../../../org/apache/hadoop/hbase/ipc/ServerCall.html" title="class in org.apache.hadoop.hbase.ipc">ServerCall</a>&lt;?&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/ipc/ServerRpcConnection.html#line.782">createCall</a>(int&nbsp;id,
                                          org.apache.hbase.thirdparty.com.google.protobuf.BlockingService&nbsp;service,
                                          org.apache.hbase.thirdparty.com.google.protobuf.Descriptors.MethodDescriptor&nbsp;md,
                                          org.apache.hadoop.hbase.shaded.protobuf.generated.RPCProtos.RequestHeader&nbsp;header,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
index 86cf419..c79a362 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.143">TableSnapshotInputFormat.TableSnapshotRegionRecordReader</a>
+<pre>static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.147">TableSnapshotInputFormat.TableSnapshotRegionRecordReader</a>
 extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;</pre>
 </li>
 </ul>
@@ -239,7 +239,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>delegate</h4>
-<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.RecordReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.145">delegate</a></pre>
+<pre>private&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.RecordReader.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.RecordReader</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.149">delegate</a></pre>
 </li>
 </ul>
 <a name="context">
@@ -248,7 +248,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>context</h4>
-<pre>private&nbsp;org.apache.hadoop.mapreduce.TaskAttemptContext <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.147">context</a></pre>
+<pre>private&nbsp;org.apache.hadoop.mapreduce.TaskAttemptContext <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.151">context</a></pre>
 </li>
 </ul>
 <a name="getCounter">
@@ -257,7 +257,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCounter</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.148">getCounter</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/reflect/Method.html?is-external=true" title="class or interface in java.lang.reflect">Method</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.152">getCounter</a></pre>
 </li>
 </ul>
 </li>
@@ -274,7 +274,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TableSnapshotRegionRecordReader</h4>
-<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.143">TableSnapshotRegionRecordReader</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.147">TableSnapshotRegionRecordReader</a>()</pre>
 </li>
 </ul>
 </li>
@@ -291,7 +291,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>initialize</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.151">initialize</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.155">initialize</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                        org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
@@ -310,7 +310,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>nextKeyValue</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.161">nextKeyValue</a>()
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.165">nextKeyValue</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>,
                             <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>
@@ -328,7 +328,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentKey</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.173">getCurrentKey</a>()
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.177">getCurrentKey</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>,
                                             <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>
@@ -346,7 +346,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>getCurrentValue</h4>
-<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.178">getCurrentValue</a>()
+<pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.182">getCurrentValue</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>,
                               <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>
@@ -364,7 +364,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockList">
 <li class="blockList">
 <h4>getProgress</h4>
-<pre>public&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.183">getProgress</a>()
+<pre>public&nbsp;float&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.187">getProgress</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>,
                          <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>
@@ -382,7 +382,7 @@ extends org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>close</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.188">close</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html#line.192">close</a>()
            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
index f0248f6..fd03a3e 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":42,"i4":10,"i5":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":42,"i5":10,"i6":10};
 var tabs = {65535:["t0","All Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"],32:["t6","Deprecated Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -190,18 +190,22 @@ implements org.apache.hadoop.io.Writable</pre>
 <th class="colLast" scope="col">Method and Description</th>
 </tr>
 <tr id="i0" class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</a></code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getDelegate--">getDelegate</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i1" class="rowColor">
 <td class="colFirst"><code>long</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getLength--">getLength</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i1" class="rowColor">
+<tr id="i2" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getLocations--">getLocations</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i2" class="altColor">
+<tr id="i3" class="rowColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getRegion--">getRegion</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<tr id="i4" class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getRegionInfo--">getRegionInfo</a></span>()</code>
 <div class="block"><span class="deprecatedLabel">Deprecated.</span>&nbsp;
@@ -210,11 +214,11 @@ implements org.apache.hadoop.io.Writable</pre>
 </div>
 </td>
 </tr>
-<tr id="i4" class="altColor">
+<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/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#readFields-java.io.DataInput-">readFields</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataInput.html?is-external=true" title="class or interface in java.io">DataInput</a>&nbsp;in)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<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/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#write-java.io.DataOutput-">write</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/DataOutput.html?is-external=true" title="class or interface in java.io">DataOutput</a>&nbsp;out)</code>&nbsp;</td>
 </tr>
@@ -386,12 +390,21 @@ public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" ti
 <a name="getRegion--">
 <!--   -->
 </a>
-<ul class="blockListLast">
+<ul class="blockList">
 <li class="blockList">
 <h4>getRegion</h4>
 <pre>public&nbsp;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#line.137">getRegion</a>()</pre>
 </li>
 </ul>
+<a name="getDelegate--">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>getDelegate</h4>
+<pre><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#line.141">getDelegate</a>()</pre>
+</li>
+</ul>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
index 36f85a8..8b2f013 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
@@ -291,7 +291,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createRecordReader</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.194">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.198">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                                   org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -308,7 +308,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.200">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;job)
+<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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.204">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;job)
                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -326,7 +326,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.218">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.222">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir)
                      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>
@@ -349,7 +349,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.234">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.238">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir,
                             <a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.SplitAlgorithm.html" title="interface in org.apache.hadoop.hbase.util">RegionSplitter.SplitAlgorithm</a>&nbsp;splitAlgo,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
index 7932341..f731451 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html
@@ -607,7 +607,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>calculateLocationsForInputSplit</h4>
-<pre>private static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.407">calculateLocationsForInputSplit</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.418">calculateLocationsForInputSplit</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                                             <a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;htd,
                                                             <a href="../../../../../org/apache/hadoop/hbase/HRegionInfo.html" title="class in org.apache.hadoop.hbase">HRegionInfo</a>&nbsp;hri,
                                                             org.apache.hadoop.fs.Path&nbsp;tableDir,
@@ -627,7 +627,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getBestLocations</h4>
-<pre>private static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.431">getBestLocations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>private static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.442">getBestLocations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                              <a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;blockDistribution,
                                              int&nbsp;numTopsAtMost)</pre>
 <div class="block">This computes the locations to be passed from the InputSplit. MR/Yarn schedulers does not take
@@ -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>getBestLocations</h4>
-<pre>public static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.471">getBestLocations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&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/mapreduce/TableSnapshotInputFormatImpl.html#line.482">getBestLocations</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
                                             <a href="../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;blockDistribution)</pre>
 </li>
 </ul>
@@ -659,7 +659,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getSnapshotName</h4>
-<pre>private static&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html#line.477">getSnapshotName</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/mapreduce/TableSnapshotInputFormatImpl.html#line.488">getSnapshotName</a>(org.apache.hadoop.conf.Configuration&nbsp;conf)</pre>
 </li>
 </ul>
 <a name="setInput-org.apache.hadoop.conf.Configuration-java.lang.String-org.apache.hadoop.fs.Path-">
@@ -668,7 +668,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html#line.494">setInput</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html#line.505">setInput</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;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir)
                      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>
@@ -691,7 +691,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html#line.510">setInput</a>(org.apache.hadoop.conf.Configuration&nbsp;conf,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.html#line.521">setInput</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;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir,
                             <a href="../../../../../org/apache/hadoop/hbase/util/RegionSplitter.SplitAlgorithm.html" title="interface in org.apache.hadoop.hbase.util">RegionSplitter.SplitAlgorithm</a>&nbsp;splitAlgo,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html
index d5f959b..df43abc 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/class-use/TableSnapshotInputFormatImpl.InputSplit.html
@@ -152,6 +152,19 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a> that return <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code>(package private) <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</a></code></td>
+<td class="colLast"><span class="typeNameLabel">TableSnapshotInputFormat.TableSnapshotRegionSplit.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getDelegate--">getDelegate</a></span>()</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
 <caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/package-summary.html">org.apache.hadoop.hbase.mapreduce</a> that return types with arguments of type <a href="../../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatImpl.InputSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatImpl.InputSplit</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/eab0a960/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
index deb19ba..dfed8e7 100644
--- a/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/mapreduce/package-tree.html
@@ -293,10 +293,10 @@
 <ul>
 <li type="circle">java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang"><span class="typeNameLink">Enum</span></a>&lt;E&gt; (implements java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Comparable.html?is-external=true" title="class or interface in java.lang">Comparable</a>&lt;T&gt;, java.io.<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html?is-external=true" title="class or interface in java.io">Serializable</a>)
 <ul>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/SyncTable.SyncMapper.Counter.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">SyncTable.SyncMapper.Counter</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/RowCounter.RowCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">RowCounter.RowCounterMapper.Counters</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSplit.Version.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">TableSplit.Version</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.mapreduce.<a href="../../../../../org/apache/hadoop/hbase/mapreduce/CellCounter.CellCounterMapper.Counters.html" title="enum in org.apache.hadoop.hbase.mapreduce"><span class="typeNameLink">CellCounter.CellCounterMapper.Counters</span></a></li>
+<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>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 be7747c..21f578d 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.247">HMaster.InitializationMonitor</a>
+<pre>private static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.248">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.249">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.250">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.250">TIMEOUT_DEFAULT</a></pre>
+<pre>public static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.251">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.256">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.257">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.257">HALT_DEFAULT</a></pre>
+<pre>public static final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.258">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.259">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.260">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.260">timeout</a></pre>
+<pre>private final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.261">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.261">haltOnTimeout</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.262">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.264">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.265">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.273">run</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.InitializationMonitor.html#line.274">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/eab0a960/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 cfe1e12..6442114 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.2848">HMaster.MasterStoppedException</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2849">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.2849">MasterStoppedException</a>()</pre>
+<pre><a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.MasterStoppedException.html#line.2850">MasterStoppedException</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 eabf147..59a73c5 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.428">HMaster.RedirectServlet</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.429">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.429">serialVersionUID</a></pre>
+<pre>private static final&nbsp;long <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.430">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.430">regionServerInfoPort</a></pre>
+<pre>private final&nbsp;int <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.RedirectServlet.html#line.431">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.431">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.432">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.437">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.438">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.443">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.444">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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index 26eb0e1..aa32745 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2267">HMaster.TableDescriptorGetter</a></pre>
+<pre>protected static interface <a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.html#line.2268">HMaster.TableDescriptorGetter</a></pre>
 <div class="block">Implement to return TableDescriptor after pre-checks</div>
 </li>
 </ul>
@@ -150,7 +150,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>get</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2268">get</a>()
+<pre><a href="../../../../../org/apache/hadoop/hbase/client/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html#line.2269">get</a>()
              throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>


[06/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/overview-tree.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/overview-tree.html b/testdevapidocs/overview-tree.html
index 32ba8fd..a49d299 100644
--- a/testdevapidocs/overview-tree.html
+++ b/testdevapidocs/overview-tree.html
@@ -1054,6 +1054,7 @@
 <ul>
 <li type="circle">org.apache.hadoop.hbase.master.HMaster (implements org.apache.hadoop.hbase.master.MasterServices)
 <ul>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad.MyMaster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestLocalHBaseCluster.MyHMaster.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestLocalHBaseCluster.MyHMaster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestMasterMetrics.MyMaster.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestMasterMetrics.MyMaster</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.<a href="org/apache/hadoop/hbase/regionserver/TestRegionMergeTransactionOnCluster.MyMaster.html" title="class in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">TestRegionMergeTransactionOnCluster.MyMaster</span></a></li>
@@ -2703,6 +2704,7 @@
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetInfoPort.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetInfoPort</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetLastFlushedSequenceId</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="org/apache/hadoop/hbase/client/TestGetProcedureResult.html" title="class in org.apache.hadoop.hbase.client"><span class="typeNameLink">TestGetProcedureResult</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.master.<a href="org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">TestGetReplicationLoad</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.http.<a href="org/apache/hadoop/hbase/http/TestGlobalFilter.RecordingFilter.html" title="class in org.apache.hadoop.hbase.http"><span class="typeNameLink">TestGlobalFilter.RecordingFilter</span></a> (implements javax.servlet.Filter)</li>
 <li type="circle">org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/TestGlobalMemStoreSize.html" title="class in org.apache.hadoop.hbase"><span class="typeNameLink">TestGlobalMemStoreSize</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.quotas.<a href="org/apache/hadoop/hbase/quotas/TestGlobalQuotaSettingsImpl.html" title="class in org.apache.hadoop.hbase.quotas"><span class="typeNameLink">TestGlobalQuotaSettingsImpl</span></a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
index 75d0f73..415d5dd 100644
--- a/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
+++ b/testdevapidocs/src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
@@ -87,82 +87,107 @@
 <span class="sourceLineNo">079</span><a name="line.79"></a>
 <span class="sourceLineNo">080</span>  @Test<a name="line.80"></a>
 <span class="sourceLineNo">081</span>  public void testPrefetch() throws Exception {<a name="line.81"></a>
-<span class="sourceLineNo">082</span>    Path storeFile = writeStoreFile();<a name="line.82"></a>
+<span class="sourceLineNo">082</span>    Path storeFile = writeStoreFile("TestPrefetch");<a name="line.82"></a>
 <span class="sourceLineNo">083</span>    readStoreFile(storeFile);<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>  private void readStoreFile(Path storeFilePath) throws Exception {<a name="line.86"></a>
-<span class="sourceLineNo">087</span>    // Open the file<a name="line.87"></a>
-<span class="sourceLineNo">088</span>    HFile.Reader reader = HFile.createReader(fs, storeFilePath, cacheConf, true, conf);<a name="line.88"></a>
-<span class="sourceLineNo">089</span><a name="line.89"></a>
-<span class="sourceLineNo">090</span>    while (!reader.prefetchComplete()) {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>      // Sleep for a bit<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      Thread.sleep(1000);<a name="line.92"></a>
-<span class="sourceLineNo">093</span>    }<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>    // Check that all of the data blocks were preloaded<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    BlockCache blockCache = cacheConf.getBlockCache();<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    long offset = 0;<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    while (offset &lt; reader.getTrailer().getLoadOnOpenDataOffset()) {<a name="line.98"></a>
-<span class="sourceLineNo">099</span>      HFileBlock block = reader.readBlock(offset, -1, false, true, false, true, null, null);<a name="line.99"></a>
-<span class="sourceLineNo">100</span>      BlockCacheKey blockCacheKey = new BlockCacheKey(reader.getName(), offset);<a name="line.100"></a>
-<span class="sourceLineNo">101</span>      boolean isCached = blockCache.getBlock(blockCacheKey, true, false, true) != null;<a name="line.101"></a>
-<span class="sourceLineNo">102</span>      if (block.getBlockType() == BlockType.DATA ||<a name="line.102"></a>
-<span class="sourceLineNo">103</span>          block.getBlockType() == BlockType.ROOT_INDEX ||<a name="line.103"></a>
-<span class="sourceLineNo">104</span>          block.getBlockType() == BlockType.INTERMEDIATE_INDEX) {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>        assertTrue(isCached);<a name="line.105"></a>
-<span class="sourceLineNo">106</span>      }<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      offset += block.getOnDiskSizeWithHeader();<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">086</span>  @Test<a name="line.86"></a>
+<span class="sourceLineNo">087</span>  public void testPrefetchRace() throws Exception {<a name="line.87"></a>
+<span class="sourceLineNo">088</span>    for (int i = 0; i &lt; 10; i++) {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>      Path storeFile = writeStoreFile("TestPrefetchRace-" + i);<a name="line.89"></a>
+<span class="sourceLineNo">090</span>      readStoreFileLikeScanner(storeFile);<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><a name="line.93"></a>
+<span class="sourceLineNo">094</span>  /**<a name="line.94"></a>
+<span class="sourceLineNo">095</span>   * Read a storefile in the same manner as a scanner -- using non-positional reads and<a name="line.95"></a>
+<span class="sourceLineNo">096</span>   * without waiting for prefetch to complete.<a name="line.96"></a>
+<span class="sourceLineNo">097</span>   */<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  private void readStoreFileLikeScanner(Path storeFilePath) throws Exception {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>    // Open the file<a name="line.99"></a>
+<span class="sourceLineNo">100</span>    HFile.Reader reader = HFile.createReader(fs, storeFilePath, cacheConf, true, conf);<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    do {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      long offset = 0;<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      while (offset &lt; reader.getTrailer().getLoadOnOpenDataOffset()) {<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        HFileBlock block = reader.readBlock(offset, -1, false, /*pread=*/false,<a name="line.104"></a>
+<span class="sourceLineNo">105</span>            false, true, null, null);<a name="line.105"></a>
+<span class="sourceLineNo">106</span>        offset += block.getOnDiskSizeWithHeader();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      }<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    } while (!reader.prefetchComplete());<a name="line.108"></a>
 <span class="sourceLineNo">109</span>  }<a name="line.109"></a>
 <span class="sourceLineNo">110</span><a name="line.110"></a>
-<span class="sourceLineNo">111</span>  private Path writeStoreFile() throws IOException {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    Path storeFileParentDir = new Path(TEST_UTIL.getDataTestDir(), "TestPrefetch");<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    HFileContext meta = new HFileContextBuilder()<a name="line.113"></a>
-<span class="sourceLineNo">114</span>      .withBlockSize(DATA_BLOCK_SIZE)<a name="line.114"></a>
-<span class="sourceLineNo">115</span>      .build();<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    StoreFileWriter sfw = new StoreFileWriter.Builder(conf, cacheConf, fs)<a name="line.116"></a>
-<span class="sourceLineNo">117</span>      .withOutputDir(storeFileParentDir)<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      .withFileContext(meta)<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      .build();<a name="line.120"></a>
-<span class="sourceLineNo">121</span><a name="line.121"></a>
-<span class="sourceLineNo">122</span>    final int rowLen = 32;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    for (int i = 0; i &lt; NUM_KV; ++i) {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      byte[] k = RandomKeyValueUtil.randomOrderedKey(RNG, i);<a name="line.124"></a>
-<span class="sourceLineNo">125</span>      byte[] v = RandomKeyValueUtil.randomValue(RNG);<a name="line.125"></a>
-<span class="sourceLineNo">126</span>      int cfLen = RNG.nextInt(k.length - rowLen + 1);<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      KeyValue kv = new KeyValue(<a name="line.127"></a>
-<span class="sourceLineNo">128</span>          k, 0, rowLen,<a name="line.128"></a>
-<span class="sourceLineNo">129</span>          k, rowLen, cfLen,<a name="line.129"></a>
-<span class="sourceLineNo">130</span>          k, rowLen + cfLen, k.length - rowLen - cfLen,<a name="line.130"></a>
-<span class="sourceLineNo">131</span>          RNG.nextLong(),<a name="line.131"></a>
-<span class="sourceLineNo">132</span>          generateKeyType(RNG),<a name="line.132"></a>
-<span class="sourceLineNo">133</span>          v, 0, v.length);<a name="line.133"></a>
-<span class="sourceLineNo">134</span>      sfw.append(kv);<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    }<a name="line.135"></a>
-<span class="sourceLineNo">136</span><a name="line.136"></a>
-<span class="sourceLineNo">137</span>    sfw.close();<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    return sfw.getPath();<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>  public static KeyValue.Type generateKeyType(Random rand) {<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    if (rand.nextBoolean()) {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      // Let's make half of KVs puts.<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      return KeyValue.Type.Put;<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    } else {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      KeyValue.Type keyType =<a name="line.146"></a>
-<span class="sourceLineNo">147</span>          KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];<a name="line.147"></a>
-<span class="sourceLineNo">148</span>      if (keyType == KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum)<a name="line.148"></a>
-<span class="sourceLineNo">149</span>      {<a name="line.149"></a>
-<span class="sourceLineNo">150</span>        throw new RuntimeException("Generated an invalid key type: " + keyType<a name="line.150"></a>
-<span class="sourceLineNo">151</span>            + ". " + "Probably the layout of KeyValue.Type has changed.");<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      return keyType;<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>}<a name="line.157"></a>
+<span class="sourceLineNo">111</span>  private void readStoreFile(Path storeFilePath) throws Exception {<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    // Open the file<a name="line.112"></a>
+<span class="sourceLineNo">113</span>    HFile.Reader reader = HFile.createReader(fs, storeFilePath, cacheConf, true, conf);<a name="line.113"></a>
+<span class="sourceLineNo">114</span><a name="line.114"></a>
+<span class="sourceLineNo">115</span>    while (!reader.prefetchComplete()) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>      // Sleep for a bit<a name="line.116"></a>
+<span class="sourceLineNo">117</span>      Thread.sleep(1000);<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>    // Check that all of the data blocks were preloaded<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    BlockCache blockCache = cacheConf.getBlockCache();<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    long offset = 0;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    while (offset &lt; reader.getTrailer().getLoadOnOpenDataOffset()) {<a name="line.123"></a>
+<span class="sourceLineNo">124</span>      HFileBlock block = reader.readBlock(offset, -1, false, true, false, true, null, null);<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      BlockCacheKey blockCacheKey = new BlockCacheKey(reader.getName(), offset);<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      boolean isCached = blockCache.getBlock(blockCacheKey, true, false, true) != null;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>      if (block.getBlockType() == BlockType.DATA ||<a name="line.127"></a>
+<span class="sourceLineNo">128</span>          block.getBlockType() == BlockType.ROOT_INDEX ||<a name="line.128"></a>
+<span class="sourceLineNo">129</span>          block.getBlockType() == BlockType.INTERMEDIATE_INDEX) {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>        assertTrue(isCached);<a name="line.130"></a>
+<span class="sourceLineNo">131</span>      }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>      offset += block.getOnDiskSizeWithHeader();<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    }<a name="line.133"></a>
+<span class="sourceLineNo">134</span>  }<a name="line.134"></a>
+<span class="sourceLineNo">135</span><a name="line.135"></a>
+<span class="sourceLineNo">136</span>  private Path writeStoreFile(String fname) throws IOException {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    Path storeFileParentDir = new Path(TEST_UTIL.getDataTestDir(), fname);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    HFileContext meta = new HFileContextBuilder()<a name="line.138"></a>
+<span class="sourceLineNo">139</span>      .withBlockSize(DATA_BLOCK_SIZE)<a name="line.139"></a>
+<span class="sourceLineNo">140</span>      .build();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>    StoreFileWriter sfw = new StoreFileWriter.Builder(conf, cacheConf, fs)<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      .withOutputDir(storeFileParentDir)<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      .withComparator(CellComparatorImpl.COMPARATOR)<a name="line.143"></a>
+<span class="sourceLineNo">144</span>      .withFileContext(meta)<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      .build();<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    final int rowLen = 32;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    for (int i = 0; i &lt; NUM_KV; ++i) {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      byte[] k = RandomKeyValueUtil.randomOrderedKey(RNG, i);<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      byte[] v = RandomKeyValueUtil.randomValue(RNG);<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      int cfLen = RNG.nextInt(k.length - rowLen + 1);<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      KeyValue kv = new KeyValue(<a name="line.152"></a>
+<span class="sourceLineNo">153</span>          k, 0, rowLen,<a name="line.153"></a>
+<span class="sourceLineNo">154</span>          k, rowLen, cfLen,<a name="line.154"></a>
+<span class="sourceLineNo">155</span>          k, rowLen + cfLen, k.length - rowLen - cfLen,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>          RNG.nextLong(),<a name="line.156"></a>
+<span class="sourceLineNo">157</span>          generateKeyType(RNG),<a name="line.157"></a>
+<span class="sourceLineNo">158</span>          v, 0, v.length);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      sfw.append(kv);<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>    sfw.close();<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    return sfw.getPath();<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>  public static KeyValue.Type generateKeyType(Random rand) {<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    if (rand.nextBoolean()) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>      // Let's make half of KVs puts.<a name="line.168"></a>
+<span class="sourceLineNo">169</span>      return KeyValue.Type.Put;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    } else {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>      KeyValue.Type keyType =<a name="line.171"></a>
+<span class="sourceLineNo">172</span>          KeyValue.Type.values()[1 + rand.nextInt(NUM_VALID_KEY_TYPES)];<a name="line.172"></a>
+<span class="sourceLineNo">173</span>      if (keyType == KeyValue.Type.Minimum || keyType == KeyValue.Type.Maximum)<a name="line.173"></a>
+<span class="sourceLineNo">174</span>      {<a name="line.174"></a>
+<span class="sourceLineNo">175</span>        throw new RuntimeException("Generated an invalid key type: " + keyType<a name="line.175"></a>
+<span class="sourceLineNo">176</span>            + ". " + "Probably the layout of KeyValue.Type has changed.");<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      }<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return keyType;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span>  }<a name="line.180"></a>
+<span class="sourceLineNo">181</span><a name="line.181"></a>
+<span class="sourceLineNo">182</span>}<a name="line.182"></a>
 
 
 


[39/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

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


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

Branch: refs/heads/asf-site
Commit: eab0a960076ba21c91489c01fa751ee309ec73c2
Parents: 51632cc
Author: jenkins <bu...@apache.org>
Authored: Tue Jun 26 15:42:32 2018 +0000
Committer: jenkins <bu...@apache.org>
Committed: Tue Jun 26 15:42:32 2018 +0000

----------------------------------------------------------------------
 acid-semantics.html                             |     4 +-
 apache_hbase_reference_guide.pdf                |     4 +-
 .../mapreduce/TableSnapshotInputFormat.html     |     8 +-
 .../mapreduce/TableSnapshotInputFormat.html     |   204 +-
 book.html                                       |     2 +-
 bulk-loads.html                                 |     4 +-
 checkstyle-aggregate.html                       | 21952 ++++++++---------
 checkstyle.rss                                  |    20 +-
 coc.html                                        |     4 +-
 dependencies.html                               |     4 +-
 dependency-convergence.html                     |     4 +-
 dependency-info.html                            |     4 +-
 dependency-management.html                      |     4 +-
 devapidocs/constant-values.html                 |     6 +-
 devapidocs/index-all.html                       |    10 +-
 .../hadoop/hbase/backup/package-tree.html       |     4 +-
 .../hadoop/hbase/class-use/ServerMetrics.html   |    15 -
 .../hadoop/hbase/class-use/ServerName.html      |   120 +-
 .../hadoop/hbase/client/package-tree.html       |    24 +-
 .../hadoop/hbase/executor/package-tree.html     |     2 +-
 .../hadoop/hbase/filter/package-tree.html       |    10 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     6 +-
 .../ServerRpcConnection.ByteBuffByteInput.html  |    20 +-
 .../hadoop/hbase/ipc/ServerRpcConnection.html   |    26 +-
 ...tFormat.TableSnapshotRegionRecordReader.html |    22 +-
 ...hotInputFormat.TableSnapshotRegionSplit.html |    27 +-
 .../mapreduce/TableSnapshotInputFormat.html     |     8 +-
 .../mapreduce/TableSnapshotInputFormatImpl.html |    12 +-
 ...TableSnapshotInputFormatImpl.InputSplit.html |    13 +
 .../hadoop/hbase/mapreduce/package-tree.html    |     4 +-
 .../master/HMaster.InitializationMonitor.html   |    20 +-
 .../master/HMaster.MasterStoppedException.html  |     4 +-
 .../hbase/master/HMaster.RedirectServlet.html   |    12 +-
 .../master/HMaster.TableDescriptorGetter.html   |     4 +-
 .../org/apache/hadoop/hbase/master/HMaster.html |   631 +-
 .../master/HMasterCommandLine.LocalHMaster.html |     2 +-
 .../AssignProcedure.CompareAssignProcedure.html |     6 +-
 .../master/assignment/AssignProcedure.html      |    14 +-
 .../assignment/RegionStates.ServerState.html    |     4 +-
 .../master/balancer/RegionLocationFinder.html   |    10 +-
 .../master/cleaner/CleanerChore.Action.html     |     4 +-
 .../cleaner/CleanerChore.CleanerTask.html       |    18 +-
 .../hbase/master/cleaner/CleanerChore.html      |    18 +-
 .../hadoop/hbase/master/package-tree.html       |     4 +-
 .../hbase/master/procedure/package-tree.html    |     4 +-
 .../org/apache/hadoop/hbase/package-tree.html   |    18 +-
 .../hadoop/hbase/procedure2/package-tree.html   |     6 +-
 .../hadoop/hbase/quotas/package-tree.html       |     6 +-
 .../hadoop/hbase/regionserver/package-tree.html |    18 +-
 .../regionserver/querymatcher/package-tree.html |     4 +-
 .../class-use/ReplicationLoadSource.html        |    22 +
 .../hadoop/hbase/replication/package-use.html   |     7 +-
 .../replication/regionserver/package-tree.html  |     2 +-
 .../hadoop/hbase/rest/model/package-tree.html   |     2 +-
 .../hbase/security/NettyHBaseSaslRpcClient.html |     2 +-
 .../NettyHBaseSaslRpcClientHandler.html         |    14 +-
 .../hbase/security/access/package-tree.html     |     4 +-
 .../hadoop/hbase/security/package-tree.html     |     2 +-
 .../hadoop/hbase/thrift/package-tree.html       |     2 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   100 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |     4 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |    58 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |    70 +-
 .../master/RegionServerListTmpl.ImplData.html   |    20 +-
 .../tmpl/master/RegionServerListTmpl.Intf.html  |     4 +-
 .../hbase/tmpl/master/RegionServerListTmpl.html |    26 +-
 .../tmpl/master/RegionServerListTmplImpl.html   |    66 +-
 .../hadoop/hbase/util/class-use/Pair.html       |     4 +
 .../apache/hadoop/hbase/util/package-tree.html  |     6 +-
 .../org/apache/hadoop/hbase/Version.html        |     6 +-
 ...ReaderImpl.BlockIndexNotLoadedException.html |     4 +-
 .../hfile/HFileReaderImpl.EncodedScanner.html   |     4 +-
 .../hfile/HFileReaderImpl.HFileScannerImpl.html |     4 +-
 .../HFileReaderImpl.NotSeekedException.html     |     4 +-
 .../hadoop/hbase/io/hfile/HFileReaderImpl.html  |     4 +-
 .../ServerRpcConnection.ByteBuffByteInput.html  |   953 +-
 .../hadoop/hbase/ipc/ServerRpcConnection.html   |   953 +-
 ...tFormat.TableSnapshotRegionRecordReader.html |   204 +-
 ...hotInputFormat.TableSnapshotRegionSplit.html |   204 +-
 .../mapreduce/TableSnapshotInputFormat.html     |   204 +-
 ...TableSnapshotInputFormatImpl.InputSplit.html |   313 +-
 ...bleSnapshotInputFormatImpl.RecordReader.html |   313 +-
 .../mapreduce/TableSnapshotInputFormatImpl.html |   313 +-
 .../master/HMaster.InitializationMonitor.html   |  7117 +++---
 .../master/HMaster.MasterStoppedException.html  |  7117 +++---
 .../hbase/master/HMaster.RedirectServlet.html   |  7117 +++---
 .../master/HMaster.TableDescriptorGetter.html   |  7117 +++---
 .../org/apache/hadoop/hbase/master/HMaster.html |  7117 +++---
 .../AssignProcedure.CompareAssignProcedure.html |   221 +-
 .../master/assignment/AssignProcedure.html      |   221 +-
 .../master/balancer/RegionLocationFinder.html   |   212 +-
 .../master/cleaner/CleanerChore.Action.html     |   600 +-
 .../cleaner/CleanerChore.CleanerTask.html       |   600 +-
 .../cleaner/CleanerChore.DirScanPool.html       |   600 +-
 .../hbase/master/cleaner/CleanerChore.html      |   600 +-
 .../cleaner/HFileCleaner.HFileDeleteTask.html   |     6 +-
 .../hbase/master/cleaner/HFileCleaner.html      |     6 +-
 .../hbase/security/NettyHBaseSaslRpcClient.html |    31 +-
 .../NettyHBaseSaslRpcClientHandler.html         |   182 +-
 .../tmpl/master/MasterStatusTmpl.ImplData.html  |   680 +-
 .../tmpl/master/MasterStatusTmpl.Intf.html      |   680 +-
 .../hbase/tmpl/master/MasterStatusTmpl.html     |   680 +-
 .../hbase/tmpl/master/MasterStatusTmplImpl.html |  1726 +-
 .../master/RegionServerListTmpl.ImplData.html   |   274 +-
 .../tmpl/master/RegionServerListTmpl.Intf.html  |   274 +-
 .../hbase/tmpl/master/RegionServerListTmpl.html |   274 +-
 .../tmpl/master/RegionServerListTmplImpl.html   |  1163 +-
 downloads.html                                  |     4 +-
 export_control.html                             |     4 +-
 index.html                                      |     4 +-
 integration.html                                |     4 +-
 issue-tracking.html                             |     4 +-
 license.html                                    |     4 +-
 mail-lists.html                                 |     4 +-
 metrics.html                                    |     4 +-
 old_news.html                                   |     4 +-
 plugin-management.html                          |     4 +-
 plugins.html                                    |     4 +-
 poweredbyhbase.html                             |     4 +-
 project-info.html                               |     4 +-
 project-reports.html                            |     4 +-
 project-summary.html                            |     4 +-
 pseudo-distributed.html                         |     4 +-
 replication.html                                |     4 +-
 resources.html                                  |     4 +-
 source-repository.html                          |     4 +-
 sponsors.html                                   |     4 +-
 supportingprojects.html                         |     4 +-
 team-list.html                                  |    40 +-
 testdevapidocs/allclasses-frame.html            |     2 +
 testdevapidocs/allclasses-noframe.html          |     2 +
 testdevapidocs/index-all.html                   |    43 +-
 .../hbase/TestLocalHBaseCluster.MyHMaster.html  |     2 +-
 .../hadoop/hbase/backup/package-tree.html       |     2 +-
 .../hbase/class-use/HBaseClassTestRule.html     |    12 +-
 .../hbase/class-use/HBaseTestingUtility.html    |    34 +-
 .../hbase/class-use/MiniHBaseCluster.html       |     6 +-
 .../hadoop/hbase/io/hfile/TestPrefetch.html     |    59 +-
 .../hadoop/hbase/io/hfile/package-tree.html     |     2 +-
 ...otInputFormat.TestTableSnapshotCounters.html |     8 +-
 ...shotInputFormat.TestTableSnapshotMapper.html |     6 +-
 ...hotInputFormat.TestTableSnapshotReducer.html |    10 +-
 .../mapreduce/TestTableSnapshotInputFormat.html |    92 +-
 .../master/TestGetLastFlushedSequenceId.html    |     4 +-
 .../master/TestGetReplicationLoad.MyMaster.html |   410 +
 .../hbase/master/TestGetReplicationLoad.html    |   420 +
 .../hbase/master/TestHMasterCommandLine.html    |     4 +-
 .../master/TestMasterMetrics.MyMaster.html      |     2 +-
 .../TestShutdownBackupMaster.MockHMaster.html   |     2 +-
 .../TestGetReplicationLoad.MyMaster.html        |   125 +
 .../class-use/TestGetReplicationLoad.html       |   125 +
 .../hadoop/hbase/master/package-frame.html      |     2 +
 .../hadoop/hbase/master/package-summary.html    |     8 +
 .../hadoop/hbase/master/package-tree.html       |     2 +
 .../org/apache/hadoop/hbase/package-tree.html   |    10 +-
 .../hadoop/hbase/procedure/package-tree.html    |     8 +-
 ...egionMergeTransactionOnCluster.MyMaster.html |     2 +-
 .../TestSplitTransactionOnCluster.MyMaster.html |     2 +-
 .../hadoop/hbase/regionserver/package-tree.html |     4 +-
 ...stReplicationProcedureRetry.MockHMaster.html |     2 +-
 .../apache/hadoop/hbase/test/package-tree.html  |     2 +-
 .../apache/hadoop/hbase/wal/package-tree.html   |     2 +-
 testdevapidocs/overview-tree.html               |     2 +
 .../hadoop/hbase/io/hfile/TestPrefetch.html     |   167 +-
 ...otInputFormat.TestTableSnapshotCounters.html |   704 +-
 ...shotInputFormat.TestTableSnapshotMapper.html |   704 +-
 ...hotInputFormat.TestTableSnapshotReducer.html |   704 +-
 .../mapreduce/TestTableSnapshotInputFormat.html |   704 +-
 .../master/TestGetReplicationLoad.MyMaster.html |   191 +
 .../hbase/master/TestGetReplicationLoad.html    |   191 +
 170 files changed, 39625 insertions(+), 37149 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/acid-semantics.html
----------------------------------------------------------------------
diff --git a/acid-semantics.html b/acid-semantics.html
index e5ca127..eccf370 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Apache HBase (TM) ACID Properties
@@ -601,7 +601,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/apache_hbase_reference_guide.pdf
----------------------------------------------------------------------
diff --git a/apache_hbase_reference_guide.pdf b/apache_hbase_reference_guide.pdf
index 09edc0d..18e915a 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:20180625143523+00'00')
-/CreationDate (D:20180625145122+00'00')
+/ModDate (D:20180626152333+00'00')
+/CreationDate (D:20180626153917+00'00')
 >>
 endobj
 2 0 obj

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html b/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
index b7ced82..7ed7d0c 100644
--- a/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
+++ b/apidocs/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
@@ -268,7 +268,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>createRecordReader</h4>
-<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.194">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
+<pre>public&nbsp;org.apache.hadoop.mapreduce.RecordReader&lt;<a href="../../../../../org/apache/hadoop/hbase/io/ImmutableBytesWritable.html" title="class in org.apache.hadoop.hbase.io">ImmutableBytesWritable</a>,<a href="../../../../../org/apache/hadoop/hbase/client/Result.html" title="class in org.apache.hadoop.hbase.client">Result</a>&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.198">createRecordReader</a>(org.apache.hadoop.mapreduce.InputSplit&nbsp;split,
                                                                                                   org.apache.hadoop.mapreduce.TaskAttemptContext&nbsp;context)
                                                                                            throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -285,7 +285,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>getSplits</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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.200">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;job)
+<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;org.apache.hadoop.mapreduce.InputSplit&gt;&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.204">getSplits</a>(org.apache.hadoop.mapreduce.JobContext&nbsp;job)
                                                        throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                                                               <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>
@@ -303,7 +303,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockList">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.218">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.222">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir)
                      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>
@@ -326,7 +326,7 @@ extends org.apache.hadoop.mapreduce.InputFormat&lt;<a href="../../../../../org/a
 <ul class="blockListLast">
 <li class="blockList">
 <h4>setInput</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.234">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html#line.238">setInput</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                             org.apache.hadoop.fs.Path&nbsp;restoreDir,
                             org.apache.hadoop.hbase.util.RegionSplitter.SplitAlgorithm&nbsp;splitAlgo,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
index 73a9329..146c5e5 100644
--- a/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
+++ b/apidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
@@ -145,106 +145,110 @@
 <span class="sourceLineNo">137</span>    public RegionInfo getRegion() {<a name="line.137"></a>
 <span class="sourceLineNo">138</span>      return delegate.getRegionInfo();<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @VisibleForTesting<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  static class TableSnapshotRegionRecordReader extends<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    private TaskAttemptContext context;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private Method getCounter;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.context = context;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      delegate.initialize(<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        context.getConfiguration());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      boolean result = delegate.nextKeyValue();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      if (result) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return result;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return delegate.getCurrentKey();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return delegate.getCurrentValue();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return delegate.getProgress();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public void close() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      delegate.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return results;<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>  /**<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param job the job to configure<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param snapshotName the name of the snapshot to read from<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * After the job is finished, restoreDir can be deleted.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException if an error occurs<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param job the job to configure<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param snapshotName the name of the snapshot to read from<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * After the job is finished, restoreDir can be deleted.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException if an error occurs<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>             splitAlgo, numSplitsPerRegion);<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">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    TableSnapshotInputFormatImpl.InputSplit getDelegate() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return this.delegate;<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><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static class TableSnapshotRegionRecordReader extends<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    private TaskAttemptContext context;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    private Method getCounter;<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        InterruptedException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      this.context = context;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      delegate.initialize(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        context.getConfiguration());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      boolean result = delegate.nextKeyValue();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (result) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<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>      return result;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return delegate.getCurrentKey();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      return delegate.getCurrentValue();<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 float getProgress() throws IOException, InterruptedException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return delegate.getProgress();<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>    @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      delegate.close();<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return results;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @param job the job to configure<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param snapshotName the name of the snapshot to read from<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * After the job is finished, restoreDir can be deleted.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @throws IOException if an error occurs<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<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>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param job the job to configure<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param snapshotName the name of the snapshot to read from<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * After the job is finished, restoreDir can be deleted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @throws IOException if an error occurs<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>             splitAlgo, numSplitsPerRegion);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/book.html
----------------------------------------------------------------------
diff --git a/book.html b/book.html
index 2d2f152..08e435a 100644
--- a/book.html
+++ b/book.html
@@ -40372,7 +40372,7 @@ org/apache/hadoop/hbase/security/access/AccessControlClient.revoke:(Lorg/apache/
 <div id="footer">
 <div id="footer-text">
 Version 3.0.0-SNAPSHOT<br>
-Last updated 2018-06-25 14:35:23 UTC
+Last updated 2018-06-26 15:23:33 UTC
 </div>
 </div>
 </body>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/bulk-loads.html
----------------------------------------------------------------------
diff --git a/bulk-loads.html b/bulk-loads.html
index 1862875..9258bcb 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013;  
       Bulk Loads in Apache HBase (TM)
@@ -306,7 +306,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 


[32/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
index 7c75b99..a8dd6cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.75">MasterStatusTmpl</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.81">MasterStatusTmpl</a>
 extends org.jamon.AbstractTemplateProxy</pre>
 </li>
 </ul>
@@ -343,7 +343,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>protected&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/tmpl/master/MasterStatusTmpl.html#line.279">assignmentManager</a></pre>
+<pre>protected&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/tmpl/master/MasterStatusTmpl.html#line.285">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorEnabled">
@@ -352,7 +352,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorEnabled</h4>
-<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.286">catalogJanitorEnabled</a></pre>
+<pre>protected&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.292">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
 <a name="deadServers">
@@ -361,7 +361,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>deadServers</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.293">deadServers</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.299">deadServers</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -370,7 +370,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>filter</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/tmpl/master/MasterStatusTmpl.html#line.300">filter</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/tmpl/master/MasterStatusTmpl.html#line.306">filter</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -379,7 +379,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>format</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/tmpl/master/MasterStatusTmpl.html#line.307">format</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/tmpl/master/MasterStatusTmpl.html#line.313">format</a></pre>
 </li>
 </ul>
 <a name="frags">
@@ -388,7 +388,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>frags</h4>
-<pre>protected&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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.314">frags</a></pre>
+<pre>protected&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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.320">frags</a></pre>
 </li>
 </ul>
 <a name="metaLocation">
@@ -397,7 +397,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>metaLocation</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.321">metaLocation</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/tmpl/master/MasterStatusTmpl.html#line.327">metaLocation</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -406,7 +406,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.328">serverManager</a></pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.334">serverManager</a></pre>
 </li>
 </ul>
 <a name="servers">
@@ -415,7 +415,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>servers</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.335">servers</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.341">servers</a></pre>
 </li>
 </ul>
 </li>
@@ -432,7 +432,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>MasterStatusTmpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.79">MasterStatusTmpl</a>(org.jamon.TemplateManager&nbsp;p_manager)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.85">MasterStatusTmpl</a>(org.jamon.TemplateManager&nbsp;p_manager)</pre>
 </li>
 </ul>
 <a name="MasterStatusTmpl-java.lang.String-">
@@ -441,7 +441,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>MasterStatusTmpl</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.84">MasterStatusTmpl</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;p_path)</pre>
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.90">MasterStatusTmpl</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;p_path)</pre>
 </li>
 </ul>
 <a name="MasterStatusTmpl--">
@@ -450,7 +450,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterStatusTmpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.89">MasterStatusTmpl</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.95">MasterStatusTmpl</a>()</pre>
 </li>
 </ul>
 </li>
@@ -467,7 +467,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>makeImplData</h4>
-<pre>protected&nbsp;org.jamon.AbstractTemplateProxy.ImplData&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.270">makeImplData</a>()</pre>
+<pre>protected&nbsp;org.jamon.AbstractTemplateProxy.ImplData&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.276">makeImplData</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>makeImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -480,7 +480,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getImplData</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.274">getImplData</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.280">getImplData</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>getImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -493,7 +493,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setAssignmentManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.280">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.286">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;p_assignmentManager)</pre>
 </li>
 </ul>
 <a name="setCatalogJanitorEnabled-boolean-">
@@ -502,7 +502,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setCatalogJanitorEnabled</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.287">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.293">setCatalogJanitorEnabled</a>(boolean&nbsp;p_catalogJanitorEnabled)</pre>
 </li>
 </ul>
 <a name="setDeadServers-java.util.Set-">
@@ -511,7 +511,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setDeadServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.294">setDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.300">setDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_deadServers)</pre>
 </li>
 </ul>
 <a name="setFilter-java.lang.String-">
@@ -520,7 +520,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFilter</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.301">setFilter</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;p_filter)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.307">setFilter</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;p_filter)</pre>
 </li>
 </ul>
 <a name="setFormat-java.lang.String-">
@@ -529,7 +529,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFormat</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.308">setFormat</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;p_format)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.314">setFormat</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;p_format)</pre>
 </li>
 </ul>
 <a name="setFrags-java.util.Map-">
@@ -538,7 +538,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFrags</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.315">setFrags</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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.321">setFrags</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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;p_frags)</pre>
 </li>
 </ul>
 <a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
@@ -547,7 +547,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setMetaLocation</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.322">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.328">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</pre>
 </li>
 </ul>
 <a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
@@ -556,7 +556,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServerManager</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.329">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.335">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;p_serverManager)</pre>
 </li>
 </ul>
 <a name="setServers-java.util.List-">
@@ -565,7 +565,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.336">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.342">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
 </li>
 </ul>
 <a name="constructImpl-java.lang.Class-">
@@ -574,7 +574,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>constructImpl</h4>
-<pre>public&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.344">constructImpl</a>(<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;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</pre>
+<pre>public&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.350">constructImpl</a>(<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;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -587,7 +587,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>constructImpl</h4>
-<pre>protected&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.362">constructImpl</a>()</pre>
+<pre>protected&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.368">constructImpl</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -600,7 +600,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>makeRenderer</h4>
-<pre>public&nbsp;org.jamon.Renderer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.365">makeRenderer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre>public&nbsp;org.jamon.Renderer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.371">makeRenderer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 </li>
 </ul>
 <a name="render-java.io.Writer-org.apache.hadoop.hbase.master.HMaster-">
@@ -609,7 +609,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>render</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.377">render</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.383">render</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                    <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)
             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>
@@ -624,7 +624,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.383">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.389">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                           <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)
                    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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index d1263c0..d27e872 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":9,"i5":10,"i6":9,"i7":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":9,"i6":10,"i7":9,"i8":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.61">MasterStatusTmplImpl</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.67">MasterStatusTmplImpl</a>
 extends org.jamon.AbstractTemplateImpl
 implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.Intf</a></pre>
 </li>
@@ -222,26 +222,30 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 </tr>
 <tr id="i2" class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__userSnapshots-java.io.Writer-">__jamon_innerUnit__userSnapshots</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__peerConfigs-java.io.Writer-">__jamon_innerUnit__peerConfigs</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
 </tr>
 <tr id="i3" class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__userTables-java.io.Writer-">__jamon_innerUnit__userTables</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__userSnapshots-java.io.Writer-">__jamon_innerUnit__userSnapshots</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</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/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__userTables-java.io.Writer-">__jamon_innerUnit__userTables</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
+</tr>
+<tr id="i5" class="rowColor">
 <td class="colFirst"><code>protected static <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData-">__jamon_setOptionalArguments</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i6" class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#formatZKString--">formatZKString</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i6" class="altColor">
+<tr id="i7" 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/tmpl/master/MasterStatusTmplImpl.html#getUserTables-org.apache.hadoop.hbase.master.HMaster-java.util.List-">getUserTables</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master,
              <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/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;tables)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#renderNoFlush-java.io.Writer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
 </tr>
@@ -280,7 +284,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <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/tmpl/master/MasterStatusTmplImpl.html#line.66">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/tmpl/master/MasterStatusTmplImpl.html#line.72">master</a></pre>
 </li>
 </ul>
 <a name="assignmentManager">
@@ -289,7 +293,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>assignmentManager</h4>
-<pre>private final&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/tmpl/master/MasterStatusTmplImpl.html#line.67">assignmentManager</a></pre>
+<pre>private final&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/tmpl/master/MasterStatusTmplImpl.html#line.73">assignmentManager</a></pre>
 </li>
 </ul>
 <a name="catalogJanitorEnabled">
@@ -298,7 +302,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>catalogJanitorEnabled</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.68">catalogJanitorEnabled</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.74">catalogJanitorEnabled</a></pre>
 </li>
 </ul>
 <a name="deadServers">
@@ -307,7 +311,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>deadServers</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.69">deadServers</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.75">deadServers</a></pre>
 </li>
 </ul>
 <a name="filter">
@@ -316,7 +320,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>filter</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/tmpl/master/MasterStatusTmplImpl.html#line.70">filter</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/tmpl/master/MasterStatusTmplImpl.html#line.76">filter</a></pre>
 </li>
 </ul>
 <a name="format">
@@ -325,7 +329,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>format</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/tmpl/master/MasterStatusTmplImpl.html#line.71">format</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/tmpl/master/MasterStatusTmplImpl.html#line.77">format</a></pre>
 </li>
 </ul>
 <a name="frags">
@@ -334,7 +338,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>frags</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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.72">frags</a></pre>
+<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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.78">frags</a></pre>
 </li>
 </ul>
 <a name="metaLocation">
@@ -343,7 +347,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>metaLocation</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.73">metaLocation</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/tmpl/master/MasterStatusTmplImpl.html#line.79">metaLocation</a></pre>
 </li>
 </ul>
 <a name="serverManager">
@@ -352,7 +356,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>serverManager</h4>
-<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.74">serverManager</a></pre>
+<pre>private final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.80">serverManager</a></pre>
 </li>
 </ul>
 <a name="servers">
@@ -361,7 +365,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockListLast">
 <li class="blockList">
 <h4>servers</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.75">servers</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.81">servers</a></pre>
 </li>
 </ul>
 </li>
@@ -378,7 +382,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockListLast">
 <li class="blockList">
 <h4>MasterStatusTmplImpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.163">MasterStatusTmplImpl</a>(org.jamon.TemplateManager&nbsp;p_templateManager,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.169">MasterStatusTmplImpl</a>(org.jamon.TemplateManager&nbsp;p_templateManager,
                             <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;p_implData)</pre>
 </li>
 </ul>
@@ -396,7 +400,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>formatZKString</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/tmpl/master/MasterStatusTmplImpl.html#line.78">formatZKString</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/tmpl/master/MasterStatusTmplImpl.html#line.84">formatZKString</a>()</pre>
 </li>
 </ul>
 <a name="getUserTables-org.apache.hadoop.hbase.master.HMaster-java.util.List-">
@@ -405,7 +409,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>getUserTables</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/tmpl/master/MasterStatusTmplImpl.html#line.105">getUserTables</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master,
+<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/tmpl/master/MasterStatusTmplImpl.html#line.111">getUserTables</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master,
                                    <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/TableDescriptor.html" title="interface in org.apache.hadoop.hbase.client">TableDescriptor</a>&gt;&nbsp;tables)</pre>
 </li>
 </ul>
@@ -415,7 +419,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_setOptionalArguments</h4>
-<pre>protected static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.123">__jamon_setOptionalArguments</a>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;p_implData)</pre>
+<pre>protected static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.129">__jamon_setOptionalArguments</a>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl.ImplData</a>&nbsp;p_implData)</pre>
 </li>
 </ul>
 <a name="renderNoFlush-java.io.Writer-">
@@ -424,7 +428,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.178">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.184">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -440,7 +444,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__catalogTables</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.545">__jamon_innerUnit__catalogTables</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.558">__jamon_innerUnit__catalogTables</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                                        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>
@@ -454,7 +458,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__deadRegionServers</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.635">__jamon_innerUnit__deadRegionServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.648">__jamon_innerUnit__deadRegionServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                                            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>
@@ -462,13 +466,27 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 </dl>
 </li>
 </ul>
+<a name="Z:Z__jamon_innerUnit__peerConfigs-java.io.Writer-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>__jamon_innerUnit__peerConfigs</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.690">__jamon_innerUnit__peerConfigs</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+                                     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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="Z:Z__jamon_innerUnit__userSnapshots-java.io.Writer-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__userSnapshots</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.677">__jamon_innerUnit__userSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.773">__jamon_innerUnit__userSnapshots</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                                        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>
@@ -482,7 +500,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Master
 <ul class="blockListLast">
 <li class="blockList">
 <h4>__jamon_innerUnit__userTables</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.735">__jamon_innerUnit__userTables</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#line.831">__jamon_innerUnit__userTables</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                                     throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
index d3ddc2c..09ca726 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.55">RegionServerListTmpl.ImplData</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.61">RegionServerListTmpl.ImplData</a>
 extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 </li>
 </ul>
@@ -230,7 +230,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_master</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.68">m_master</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.74">m_master</a></pre>
 </li>
 </ul>
 <a name="m_servers">
@@ -239,7 +239,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_servers</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.80">m_servers</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.86">m_servers</a></pre>
 </li>
 </ul>
 <a name="m_servers__IsNotDefault">
@@ -248,7 +248,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>m_servers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.85">m_servers__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.91">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -265,7 +265,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ImplData</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.55">ImplData</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.61">ImplData</a>()</pre>
 </li>
 </ul>
 </li>
@@ -282,7 +282,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.59">setMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.65">setMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 </li>
 </ul>
 <a name="getMaster--">
@@ -291,7 +291,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.64">getMaster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.70">getMaster</a>()</pre>
 </li>
 </ul>
 <a name="setServers-java.util.List-">
@@ -300,7 +300,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.70">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.76">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
 </li>
 </ul>
 <a name="getServers--">
@@ -309,7 +309,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServers</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.76">getServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.82">getServers</a>()</pre>
 </li>
 </ul>
 <a name="getServers__IsNotDefault--">
@@ -318,7 +318,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.81">getServers__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html#line.87">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
index 2420a9f..e286237 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.48">RegionServerListTmpl.Intf</a>
+<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.54">RegionServerListTmpl.Intf</a>
 extends org.jamon.AbstractTemplateProxy.Intf</pre>
 </li>
 </ul>
@@ -158,7 +158,7 @@ extends org.jamon.AbstractTemplateProxy.Intf</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html#line.52">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html#line.58">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
index 57a5dda..c7091a2 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html
@@ -114,7 +114,7 @@ var activeTableTab = "activeTableTab";
 <li class="blockList">
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.29">RegionServerListTmpl</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.35">RegionServerListTmpl</a>
 extends org.jamon.AbstractTemplateProxy</pre>
 </li>
 </ul>
@@ -279,7 +279,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>servers</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.97">servers</a></pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.103">servers</a></pre>
 </li>
 </ul>
 </li>
@@ -296,7 +296,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionServerListTmpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.33">RegionServerListTmpl</a>(org.jamon.TemplateManager&nbsp;p_manager)</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.39">RegionServerListTmpl</a>(org.jamon.TemplateManager&nbsp;p_manager)</pre>
 </li>
 </ul>
 <a name="RegionServerListTmpl-java.lang.String-">
@@ -305,7 +305,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>RegionServerListTmpl</h4>
-<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.38">RegionServerListTmpl</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;p_path)</pre>
+<pre>protected&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.44">RegionServerListTmpl</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;p_path)</pre>
 </li>
 </ul>
 <a name="RegionServerListTmpl--">
@@ -314,7 +314,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionServerListTmpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.43">RegionServerListTmpl</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.49">RegionServerListTmpl</a>()</pre>
 </li>
 </ul>
 </li>
@@ -331,7 +331,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>makeImplData</h4>
-<pre>protected&nbsp;org.jamon.AbstractTemplateProxy.ImplData&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.88">makeImplData</a>()</pre>
+<pre>protected&nbsp;org.jamon.AbstractTemplateProxy.ImplData&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.94">makeImplData</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>makeImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -344,7 +344,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getImplData</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.92">getImplData</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.98">getImplData</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
 <dd><code>getImplData</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -357,7 +357,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServers</h4>
-<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.98">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
+<pre>public final&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.104">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;p_servers)</pre>
 </li>
 </ul>
 <a name="constructImpl-java.lang.Class-">
@@ -366,7 +366,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>constructImpl</h4>
-<pre>public&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.106">constructImpl</a>(<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;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</pre>
+<pre>public&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.112">constructImpl</a>(<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;? extends org.jamon.AbstractTemplateImpl&gt;&nbsp;p_class)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -379,7 +379,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>constructImpl</h4>
-<pre>protected&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.124">constructImpl</a>()</pre>
+<pre>protected&nbsp;org.jamon.AbstractTemplateImpl&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.130">constructImpl</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>constructImpl</code>&nbsp;in class&nbsp;<code>org.jamon.AbstractTemplateProxy</code></dd>
@@ -392,7 +392,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>makeRenderer</h4>
-<pre>public&nbsp;org.jamon.Renderer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.127">makeRenderer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre>public&nbsp;org.jamon.Renderer&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.133">makeRenderer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 </li>
 </ul>
 <a name="render-java.io.Writer-org.apache.hadoop.hbase.master.HMaster-">
@@ -401,7 +401,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>render</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.139">render</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.145">render</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                    <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)
             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>
@@ -416,7 +416,7 @@ extends org.jamon.AbstractTemplateProxy</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.145">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.html#line.151">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                           <a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)
                    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>


[10/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
index 42d8c77..7974ffe 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
@@ -16,536 +16,655 @@
 <span class="sourceLineNo">008</span>// 28, 9<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 29, 9<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.procedure2.util.StringUtils;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 30, 9<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 31, 9<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.ServerName;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.RegionMetrics;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 32, 9<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.Size;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.ServerMetrics;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 33, 9<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.ServerName;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 34, 9<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.21"></a>
-<span class="sourceLineNo">022</span><a name="line.22"></a>
-<span class="sourceLineNo">023</span>public class RegionServerListTmplImpl<a name="line.23"></a>
-<span class="sourceLineNo">024</span>  extends org.jamon.AbstractTemplateImpl<a name="line.24"></a>
-<span class="sourceLineNo">025</span>  implements org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.Intf<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>  private final HMaster master;<a name="line.28"></a>
-<span class="sourceLineNo">029</span>  private final List&lt;ServerName&gt; servers;<a name="line.29"></a>
-<span class="sourceLineNo">030</span>  protected static org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)<a name="line.30"></a>
-<span class="sourceLineNo">031</span>  {<a name="line.31"></a>
-<span class="sourceLineNo">032</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.32"></a>
-<span class="sourceLineNo">033</span>    {<a name="line.33"></a>
-<span class="sourceLineNo">034</span>      p_implData.setServers(null);<a name="line.34"></a>
-<span class="sourceLineNo">035</span>    }<a name="line.35"></a>
-<span class="sourceLineNo">036</span>    return p_implData;<a name="line.36"></a>
-<span class="sourceLineNo">037</span>  }<a name="line.37"></a>
-<span class="sourceLineNo">038</span>  public RegionServerListTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)<a name="line.38"></a>
-<span class="sourceLineNo">039</span>  {<a name="line.39"></a>
-<span class="sourceLineNo">040</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.40"></a>
-<span class="sourceLineNo">041</span>    master = p_implData.getMaster();<a name="line.41"></a>
-<span class="sourceLineNo">042</span>    servers = p_implData.getServers();<a name="line.42"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.Size;<a name="line.21"></a>
+<span class="sourceLineNo">022</span>// 35, 9<a name="line.22"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.23"></a>
+<span class="sourceLineNo">024</span>// 36, 9<a name="line.24"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.25"></a>
+<span class="sourceLineNo">026</span>// 37, 9<a name="line.26"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.util.StringUtils.TraditionalBinaryPrefix;<a name="line.27"></a>
+<span class="sourceLineNo">028</span><a name="line.28"></a>
+<span class="sourceLineNo">029</span>public class RegionServerListTmplImpl<a name="line.29"></a>
+<span class="sourceLineNo">030</span>  extends org.jamon.AbstractTemplateImpl<a name="line.30"></a>
+<span class="sourceLineNo">031</span>  implements org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.Intf<a name="line.31"></a>
+<span class="sourceLineNo">032</span><a name="line.32"></a>
+<span class="sourceLineNo">033</span>{<a name="line.33"></a>
+<span class="sourceLineNo">034</span>  private final HMaster master;<a name="line.34"></a>
+<span class="sourceLineNo">035</span>  private final List&lt;ServerName&gt; servers;<a name="line.35"></a>
+<span class="sourceLineNo">036</span>  protected static org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)<a name="line.36"></a>
+<span class="sourceLineNo">037</span>  {<a name="line.37"></a>
+<span class="sourceLineNo">038</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.38"></a>
+<span class="sourceLineNo">039</span>    {<a name="line.39"></a>
+<span class="sourceLineNo">040</span>      p_implData.setServers(null);<a name="line.40"></a>
+<span class="sourceLineNo">041</span>    }<a name="line.41"></a>
+<span class="sourceLineNo">042</span>    return p_implData;<a name="line.42"></a>
 <span class="sourceLineNo">043</span>  }<a name="line.43"></a>
-<span class="sourceLineNo">044</span>  <a name="line.44"></a>
-<span class="sourceLineNo">045</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.45"></a>
-<span class="sourceLineNo">046</span>    throws java.io.IOException<a name="line.46"></a>
-<span class="sourceLineNo">047</span>  {<a name="line.47"></a>
-<span class="sourceLineNo">048</span>    // 38, 1<a name="line.48"></a>
-<span class="sourceLineNo">049</span>    if ((servers != null &amp;&amp; servers.size() &gt; 0))<a name="line.49"></a>
-<span class="sourceLineNo">050</span>    {<a name="line.50"></a>
-<span class="sourceLineNo">051</span>      // 38, 47<a name="line.51"></a>
-<span class="sourceLineNo">052</span>      jamonWriter.write("\n\n");<a name="line.52"></a>
-<span class="sourceLineNo">053</span>      // 40, 1<a name="line.53"></a>
-<span class="sourceLineNo">054</span>      <a name="line.54"></a>
-<span class="sourceLineNo">055</span>ServerName [] serverNames = servers.toArray(new ServerName[servers.size()]);<a name="line.55"></a>
-<span class="sourceLineNo">056</span>Arrays.sort(serverNames);<a name="line.56"></a>
-<span class="sourceLineNo">057</span><a name="line.57"></a>
-<span class="sourceLineNo">058</span>      // 45, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>      jamonWriter.write("&lt;div class=\"tabbable\"&gt;\n    &lt;ul class=\"nav nav-pills\"&gt;\n        &lt;li class=\"active\"&gt;&lt;a href=\"#tab_baseStats\" data-toggle=\"tab\"&gt;Base Stats&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_memoryStats\" data-toggle=\"tab\"&gt;Memory&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_requestStats\" data-toggle=\"tab\"&gt;Requests&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_storeStats\" data-toggle=\"tab\"&gt;Storefiles&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_compactStas\" data-toggle=\"tab\"&gt;Compactions&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n    &lt;div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\"&gt;\n        &lt;div class=\"tab-pane active\" id=\"tab_baseStats\"&gt;\n            ");<a name="line.59"></a>
-<span class="sourceLineNo">060</span>      // 55, 13<a name="line.60"></a>
-<span class="sourceLineNo">061</span>      {<a name="line.61"></a>
-<span class="sourceLineNo">062</span>        // 55, 13<a name="line.62"></a>
-<span class="sourceLineNo">063</span>        __jamon_innerUnit__baseStats(jamonWriter, serverNames);<a name="line.63"></a>
-<span class="sourceLineNo">064</span>      }<a name="line.64"></a>
-<span class="sourceLineNo">065</span>      // 55, 56<a name="line.65"></a>
-<span class="sourceLineNo">066</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_memoryStats\"&gt;\n            ");<a name="line.66"></a>
-<span class="sourceLineNo">067</span>      // 58, 13<a name="line.67"></a>
-<span class="sourceLineNo">068</span>      {<a name="line.68"></a>
-<span class="sourceLineNo">069</span>        // 58, 13<a name="line.69"></a>
-<span class="sourceLineNo">070</span>        __jamon_innerUnit__memoryStats(jamonWriter, serverNames);<a name="line.70"></a>
-<span class="sourceLineNo">071</span>      }<a name="line.71"></a>
-<span class="sourceLineNo">072</span>      // 58, 58<a name="line.72"></a>
-<span class="sourceLineNo">073</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_requestStats\"&gt;\n            ");<a name="line.73"></a>
-<span class="sourceLineNo">074</span>      // 61, 13<a name="line.74"></a>
-<span class="sourceLineNo">075</span>      {<a name="line.75"></a>
-<span class="sourceLineNo">076</span>        // 61, 13<a name="line.76"></a>
-<span class="sourceLineNo">077</span>        __jamon_innerUnit__requestStats(jamonWriter, serverNames);<a name="line.77"></a>
-<span class="sourceLineNo">078</span>      }<a name="line.78"></a>
-<span class="sourceLineNo">079</span>      // 61, 59<a name="line.79"></a>
-<span class="sourceLineNo">080</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_storeStats\"&gt;\n            ");<a name="line.80"></a>
-<span class="sourceLineNo">081</span>      // 64, 13<a name="line.81"></a>
-<span class="sourceLineNo">082</span>      {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>        // 64, 13<a name="line.83"></a>
-<span class="sourceLineNo">084</span>        __jamon_innerUnit__storeStats(jamonWriter, serverNames);<a name="line.84"></a>
-<span class="sourceLineNo">085</span>      }<a name="line.85"></a>
-<span class="sourceLineNo">086</span>      // 64, 57<a name="line.86"></a>
-<span class="sourceLineNo">087</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_compactStas\"&gt;\n            ");<a name="line.87"></a>
-<span class="sourceLineNo">088</span>      // 67, 13<a name="line.88"></a>
-<span class="sourceLineNo">089</span>      {<a name="line.89"></a>
-<span class="sourceLineNo">090</span>        // 67, 13<a name="line.90"></a>
-<span class="sourceLineNo">091</span>        __jamon_innerUnit__compactionStats(jamonWriter, serverNames);<a name="line.91"></a>
-<span class="sourceLineNo">092</span>      }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      // 67, 62<a name="line.93"></a>
-<span class="sourceLineNo">094</span>      jamonWriter.write("\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n\n");<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    }<a name="line.95"></a>
-<span class="sourceLineNo">096</span>    // 72, 7<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    jamonWriter.write("\n\n");<a name="line.97"></a>
-<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
-<span class="sourceLineNo">099</span>  <a name="line.99"></a>
-<span class="sourceLineNo">100</span>  <a name="line.100"></a>
-<span class="sourceLineNo">101</span>  // 74, 1<a name="line.101"></a>
-<span class="sourceLineNo">102</span>  private void __jamon_innerUnit__baseStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.102"></a>
-<span class="sourceLineNo">103</span>    throws java.io.IOException<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  {<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    // 78, 1<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Start time&lt;/th&gt;\n    &lt;th&gt;Last contact&lt;/th&gt;\n    &lt;th&gt;Version&lt;/th&gt;\n    &lt;th&gt;Requests Per Second&lt;/th&gt;\n    &lt;th&gt;Num. Regions&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.106"></a>
-<span class="sourceLineNo">107</span>    // 87, 1<a name="line.107"></a>
-<span class="sourceLineNo">108</span>    <a name="line.108"></a>
-<span class="sourceLineNo">109</span>    int totalRegions = 0;<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    int totalRequestsPerSecond = 0;<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    int inconsistentNodeNum = 0;<a name="line.111"></a>
-<span class="sourceLineNo">112</span>    String masterVersion = VersionInfo.getVersion();<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    for (ServerName serverName: serverNames) {<a name="line.113"></a>
-<span class="sourceLineNo">114</span><a name="line.114"></a>
-<span class="sourceLineNo">115</span>    ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    String version = master.getRegionServerVersion(serverName);<a name="line.116"></a>
-<span class="sourceLineNo">117</span>    if (!masterVersion.equals(version)) {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>        inconsistentNodeNum ++;<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>    double requestsPerSecond = 0.0;<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    int numRegionsOnline = 0;<a name="line.122"></a>
-<span class="sourceLineNo">123</span>    long lastContact = 0;<a name="line.123"></a>
-<span class="sourceLineNo">124</span><a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if (sl != null) {<a name="line.125"></a>
-<span class="sourceLineNo">126</span>        requestsPerSecond = sl.getRequestCountPerSecond();<a name="line.126"></a>
-<span class="sourceLineNo">127</span>        numRegionsOnline = sl.getRegionMetrics().size();<a name="line.127"></a>
-<span class="sourceLineNo">128</span>        totalRegions += sl.getRegionMetrics().size();<a name="line.128"></a>
-<span class="sourceLineNo">129</span>        totalRequestsPerSecond += sl.getRequestCountPerSecond();<a name="line.129"></a>
-<span class="sourceLineNo">130</span>        lastContact = (System.currentTimeMillis() - sl.getReportTimestamp())/1000;<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    long startcode = serverName.getStartcode();<a name="line.132"></a>
+<span class="sourceLineNo">044</span>  public RegionServerListTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData p_implData)<a name="line.44"></a>
+<span class="sourceLineNo">045</span>  {<a name="line.45"></a>
+<span class="sourceLineNo">046</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.46"></a>
+<span class="sourceLineNo">047</span>    master = p_implData.getMaster();<a name="line.47"></a>
+<span class="sourceLineNo">048</span>    servers = p_implData.getServers();<a name="line.48"></a>
+<span class="sourceLineNo">049</span>  }<a name="line.49"></a>
+<span class="sourceLineNo">050</span>  <a name="line.50"></a>
+<span class="sourceLineNo">051</span>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.51"></a>
+<span class="sourceLineNo">052</span>    throws java.io.IOException<a name="line.52"></a>
+<span class="sourceLineNo">053</span>  {<a name="line.53"></a>
+<span class="sourceLineNo">054</span>    // 41, 1<a name="line.54"></a>
+<span class="sourceLineNo">055</span>    if ((servers != null &amp;&amp; servers.size() &gt; 0))<a name="line.55"></a>
+<span class="sourceLineNo">056</span>    {<a name="line.56"></a>
+<span class="sourceLineNo">057</span>      // 41, 47<a name="line.57"></a>
+<span class="sourceLineNo">058</span>      jamonWriter.write("\n\n");<a name="line.58"></a>
+<span class="sourceLineNo">059</span>      // 43, 1<a name="line.59"></a>
+<span class="sourceLineNo">060</span>      <a name="line.60"></a>
+<span class="sourceLineNo">061</span>ServerName [] serverNames = servers.toArray(new ServerName[servers.size()]);<a name="line.61"></a>
+<span class="sourceLineNo">062</span>Arrays.sort(serverNames);<a name="line.62"></a>
+<span class="sourceLineNo">063</span><a name="line.63"></a>
+<span class="sourceLineNo">064</span>      // 48, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>      jamonWriter.write("&lt;div class=\"tabbable\"&gt;\n    &lt;ul class=\"nav nav-pills\"&gt;\n        &lt;li class=\"active\"&gt;&lt;a href=\"#tab_baseStats\" data-toggle=\"tab\"&gt;Base Stats&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_memoryStats\" data-toggle=\"tab\"&gt;Memory&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_requestStats\" data-toggle=\"tab\"&gt;Requests&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_storeStats\" data-toggle=\"tab\"&gt;Storefiles&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_compactStats\" data-toggle=\"tab\"&gt;Compactions&lt;/a&gt;&lt;/li&gt;\n        &lt;li class=\"\"&gt;&lt;a href=\"#tab_replicationStats\" data-toggle=\"tab\"&gt;Replications&lt;/a&gt;&lt;/li&gt;\n    &lt;/ul&gt;\n    &lt;div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\"&gt;\n        &lt;div class=\"tab-pane act
 ive\" id=\"tab_baseStats\"&gt;\n            ");<a name="line.65"></a>
+<span class="sourceLineNo">066</span>      // 59, 13<a name="line.66"></a>
+<span class="sourceLineNo">067</span>      {<a name="line.67"></a>
+<span class="sourceLineNo">068</span>        // 59, 13<a name="line.68"></a>
+<span class="sourceLineNo">069</span>        __jamon_innerUnit__baseStats(jamonWriter, serverNames);<a name="line.69"></a>
+<span class="sourceLineNo">070</span>      }<a name="line.70"></a>
+<span class="sourceLineNo">071</span>      // 59, 56<a name="line.71"></a>
+<span class="sourceLineNo">072</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_memoryStats\"&gt;\n            ");<a name="line.72"></a>
+<span class="sourceLineNo">073</span>      // 62, 13<a name="line.73"></a>
+<span class="sourceLineNo">074</span>      {<a name="line.74"></a>
+<span class="sourceLineNo">075</span>        // 62, 13<a name="line.75"></a>
+<span class="sourceLineNo">076</span>        __jamon_innerUnit__memoryStats(jamonWriter, serverNames);<a name="line.76"></a>
+<span class="sourceLineNo">077</span>      }<a name="line.77"></a>
+<span class="sourceLineNo">078</span>      // 62, 58<a name="line.78"></a>
+<span class="sourceLineNo">079</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_requestStats\"&gt;\n            ");<a name="line.79"></a>
+<span class="sourceLineNo">080</span>      // 65, 13<a name="line.80"></a>
+<span class="sourceLineNo">081</span>      {<a name="line.81"></a>
+<span class="sourceLineNo">082</span>        // 65, 13<a name="line.82"></a>
+<span class="sourceLineNo">083</span>        __jamon_innerUnit__requestStats(jamonWriter, serverNames);<a name="line.83"></a>
+<span class="sourceLineNo">084</span>      }<a name="line.84"></a>
+<span class="sourceLineNo">085</span>      // 65, 59<a name="line.85"></a>
+<span class="sourceLineNo">086</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_storeStats\"&gt;\n            ");<a name="line.86"></a>
+<span class="sourceLineNo">087</span>      // 68, 13<a name="line.87"></a>
+<span class="sourceLineNo">088</span>      {<a name="line.88"></a>
+<span class="sourceLineNo">089</span>        // 68, 13<a name="line.89"></a>
+<span class="sourceLineNo">090</span>        __jamon_innerUnit__storeStats(jamonWriter, serverNames);<a name="line.90"></a>
+<span class="sourceLineNo">091</span>      }<a name="line.91"></a>
+<span class="sourceLineNo">092</span>      // 68, 57<a name="line.92"></a>
+<span class="sourceLineNo">093</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_compactStats\"&gt;\n            ");<a name="line.93"></a>
+<span class="sourceLineNo">094</span>      // 71, 13<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      {<a name="line.95"></a>
+<span class="sourceLineNo">096</span>        // 71, 13<a name="line.96"></a>
+<span class="sourceLineNo">097</span>        __jamon_innerUnit__compactionStats(jamonWriter, serverNames);<a name="line.97"></a>
+<span class="sourceLineNo">098</span>      }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      // 71, 62<a name="line.99"></a>
+<span class="sourceLineNo">100</span>      jamonWriter.write("\n        &lt;/div&gt;\n        &lt;div class=\"tab-pane\" id=\"tab_replicationStats\"&gt;\n            ");<a name="line.100"></a>
+<span class="sourceLineNo">101</span>      // 74, 13<a name="line.101"></a>
+<span class="sourceLineNo">102</span>      {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>        // 74, 13<a name="line.103"></a>
+<span class="sourceLineNo">104</span>        __jamon_innerUnit__replicationStats(jamonWriter, serverNames);<a name="line.104"></a>
+<span class="sourceLineNo">105</span>      }<a name="line.105"></a>
+<span class="sourceLineNo">106</span>      // 74, 63<a name="line.106"></a>
+<span class="sourceLineNo">107</span>      jamonWriter.write("\n        &lt;/div&gt;\n    &lt;/div&gt;\n&lt;/div&gt;\n\n");<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    }<a name="line.108"></a>
+<span class="sourceLineNo">109</span>    // 79, 7<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    jamonWriter.write("\n\n");<a name="line.110"></a>
+<span class="sourceLineNo">111</span>  }<a name="line.111"></a>
+<span class="sourceLineNo">112</span>  <a name="line.112"></a>
+<span class="sourceLineNo">113</span>  <a name="line.113"></a>
+<span class="sourceLineNo">114</span>  // 81, 1<a name="line.114"></a>
+<span class="sourceLineNo">115</span>  private void __jamon_innerUnit__baseStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    throws java.io.IOException<a name="line.116"></a>
+<span class="sourceLineNo">117</span>  {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>    // 85, 1<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Start time&lt;/th&gt;\n    &lt;th&gt;Last contact&lt;/th&gt;\n    &lt;th&gt;Version&lt;/th&gt;\n    &lt;th&gt;Requests Per Second&lt;/th&gt;\n    &lt;th&gt;Num. Regions&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    // 94, 1<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    <a name="line.121"></a>
+<span class="sourceLineNo">122</span>    int totalRegions = 0;<a name="line.122"></a>
+<span class="sourceLineNo">123</span>    int totalRequestsPerSecond = 0;<a name="line.123"></a>
+<span class="sourceLineNo">124</span>    int inconsistentNodeNum = 0;<a name="line.124"></a>
+<span class="sourceLineNo">125</span>    String masterVersion = VersionInfo.getVersion();<a name="line.125"></a>
+<span class="sourceLineNo">126</span>    for (ServerName serverName: serverNames) {<a name="line.126"></a>
+<span class="sourceLineNo">127</span><a name="line.127"></a>
+<span class="sourceLineNo">128</span>    ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    String version = master.getRegionServerVersion(serverName);<a name="line.129"></a>
+<span class="sourceLineNo">130</span>    if (!masterVersion.equals(version)) {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>        inconsistentNodeNum ++;<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
 <span class="sourceLineNo">133</span><a name="line.133"></a>
-<span class="sourceLineNo">134</span>    // 113, 1<a name="line.134"></a>
-<span class="sourceLineNo">135</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    // 114, 9<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    {<a name="line.137"></a>
-<span class="sourceLineNo">138</span>      // 114, 9<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, sl);<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    // 114, 70<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    // 115, 9<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(startcode)), jamonWriter);<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    // 115, 34<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    // 116, 9<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(lastContact, "s", 1)), jamonWriter);<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // 116, 71<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    // 117, 9<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(version), jamonWriter);<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    // 117, 22<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    // 118, 9<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", requestsPerSecond)), jamonWriter);<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    // 118, 55<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    // 119, 9<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(numRegionsOnline), jamonWriter);<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    // 119, 31<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n");<a name="line.162"></a>
-<span class="sourceLineNo">163</span>    // 121, 1<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><a name="line.166"></a>
-<span class="sourceLineNo">167</span>    // 124, 1<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    jamonWriter.write("&lt;tr&gt;&lt;td&gt;Total:");<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    // 124, 15<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(servers.size()), jamonWriter);<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    // 124, 35<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;&lt;/td&gt;\n&lt;td&gt;&lt;/td&gt;\n");<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    // 127, 1<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    if (inconsistentNodeNum &gt; 0)<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    {<a name="line.175"></a>
-<span class="sourceLineNo">176</span>      // 127, 31<a name="line.176"></a>
-<span class="sourceLineNo">177</span>      jamonWriter.write("\n  &lt;td style=\"color:red;\"&gt;");<a name="line.177"></a>
-<span class="sourceLineNo">178</span>      // 128, 26<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(inconsistentNodeNum), jamonWriter);<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      // 128, 51<a name="line.180"></a>
-<span class="sourceLineNo">181</span>      jamonWriter.write(" nodes with inconsistent version&lt;/td&gt;\n");<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // 129, 1<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    else<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // 129, 8<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      jamonWriter.write("\n   &lt;td&gt;&lt;/td&gt;\n");<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    }<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    // 131, 7<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    jamonWriter.write("\n&lt;td&gt;");<a name="line.190"></a>
-<span class="sourceLineNo">191</span>    // 132, 5<a name="line.191"></a>
-<span class="sourceLineNo">192</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRequestsPerSecond), jamonWriter);<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    // 132, 33<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    // 133, 5<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRegions), jamonWriter);<a name="line.196"></a>
-<span class="sourceLineNo">197</span>    // 133, 23<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/table&gt;\n");<a name="line.198"></a>
-<span class="sourceLineNo">199</span>  }<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  <a name="line.200"></a>
-<span class="sourceLineNo">201</span>  <a name="line.201"></a>
-<span class="sourceLineNo">202</span>  // 285, 1<a name="line.202"></a>
-<span class="sourceLineNo">203</span>  private void __jamon_innerUnit__compactionStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.203"></a>
-<span class="sourceLineNo">204</span>    throws java.io.IOException<a name="line.204"></a>
-<span class="sourceLineNo">205</span>  {<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    // 289, 1<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Num. Compacting Cells&lt;/th&gt;\n    &lt;th&gt;Num. Compacted Cells&lt;/th&gt;\n    &lt;th&gt;Remaining Cells&lt;/th&gt;\n    &lt;th&gt;Compaction Progress&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    // 297, 1<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    <a name="line.209"></a>
-<span class="sourceLineNo">210</span>for (ServerName serverName: serverNames) {<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.212"></a>
-<span class="sourceLineNo">213</span>if (sl != null) {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>long totalCompactingCells = 0;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>long totalCompactedCells = 0;<a name="line.215"></a>
-<span class="sourceLineNo">216</span>for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.216"></a>
-<span class="sourceLineNo">217</span>  totalCompactingCells += rl.getCompactingCellCount();<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  totalCompactedCells += rl.getCompactedCellCount();<a name="line.218"></a>
-<span class="sourceLineNo">219</span>}<a name="line.219"></a>
-<span class="sourceLineNo">220</span>String percentDone = "";<a name="line.220"></a>
-<span class="sourceLineNo">221</span>if  (totalCompactingCells &gt; 0) {<a name="line.221"></a>
-<span class="sourceLineNo">222</span>     percentDone = String.format("%.2f", 100 *<a name="line.222"></a>
-<span class="sourceLineNo">223</span>        ((float) totalCompactedCells / totalCompactingCells)) + "%";<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>    // 314, 1<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    jamonWriter.write("&lt;tr&gt;\n&lt;td&gt;");<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    // 315, 5<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    {<a name="line.229"></a>
-<span class="sourceLineNo">230</span>      // 315, 5<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, sl);<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    // 315, 66<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    // 316, 5<a name="line.235"></a>
-<span class="sourceLineNo">236</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactingCells), jamonWriter);<a name="line.236"></a>
-<span class="sourceLineNo">237</span>    // 316, 31<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    // 317, 5<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactedCells), jamonWriter);<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // 317, 30<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    // 318, 5<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactingCells - totalCompactedCells), jamonWriter);<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    // 318, 53<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    // 319, 5<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(percentDone), jamonWriter);<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    // 319, 22<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n");<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // 321, 1<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    <a name="line.252"></a>
-<span class="sourceLineNo">253</span>        }  else {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        <a name="line.254"></a>
-<span class="sourceLineNo">255</span>    // 324, 1<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    {<a name="line.256"></a>
-<span class="sourceLineNo">257</span>      // 324, 1<a name="line.257"></a>
-<span class="sourceLineNo">258</span>      __jamon_innerUnit__emptyStat(jamonWriter, serverName);<a name="line.258"></a>
-<span class="sourceLineNo">259</span>    }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    // 324, 40<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    jamonWriter.write("\n");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    // 325, 1<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    <a name="line.263"></a>
-<span class="sourceLineNo">264</span>    }<a name="line.264"></a>
-<span class="sourceLineNo">265</span>}<a name="line.265"></a>
-<span class="sourceLineNo">266</span><a name="line.266"></a>
-<span class="sourceLineNo">267</span>    // 329, 1<a name="line.267"></a>
-<span class="sourceLineNo">268</span>    jamonWriter.write("&lt;/table&gt;\n");<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>  // 350, 1<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  private void __jamon_innerUnit__emptyStat(final java.io.Writer jamonWriter, final ServerName serverName)<a name="line.273"></a>
-<span class="sourceLineNo">274</span>    throws java.io.IOException<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    // 354, 5<a name="line.276"></a>
-<span class="sourceLineNo">277</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>    // 355, 9<a name="line.278"></a>
-<span class="sourceLineNo">279</span>    {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      // 355, 9<a name="line.280"></a>
-<span class="sourceLineNo">281</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, null);<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    }<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    // 355, 72<a name="line.283"></a>
-<span class="sourceLineNo">284</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;/tr&gt;\n");<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>  // 138, 1<a name="line.288"></a>
-<span class="sourceLineNo">289</span>  private void __jamon_innerUnit__memoryStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    throws java.io.IOException<a name="line.290"></a>
-<span class="sourceLineNo">291</span>  {<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    // 142, 1<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Used Heap&lt;/th&gt;\n    &lt;th&gt;Max Heap&lt;/th&gt;\n    &lt;th&gt;Memstore Size&lt;/th&gt;\n\n&lt;/tr&gt;\n");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>    // 150, 1<a name="line.294"></a>
-<span class="sourceLineNo">295</span>    <a name="line.295"></a>
-<span class="sourceLineNo">296</span>for (ServerName serverName: serverNames) {<a name="line.296"></a>
-<span class="sourceLineNo">297</span><a name="line.297"></a>
-<span class="sourceLineNo">298</span>    ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.298"></a>
-<span class="sourceLineNo">299</span>    if (sl != null) {<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      long memStoreSizeMB = 0;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.301"></a>
-<span class="sourceLineNo">302</span>        memStoreSizeMB += rl.getMemStoreSize().get(Size.Unit.MEGABYTE);<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>    // 160, 1<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    // 161, 9<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>      // 161, 9<a name="line.309"></a>
-<span class="sourceLineNo">310</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, sl);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>    // 161, 70<a name="line.312"></a>
-<span class="sourceLineNo">313</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.313"></a>
-<span class="sourceLineNo">314</span>    // 162, 9<a name="line.314"></a>
-<span class="sourceLineNo">315</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String((long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    // 163, 55<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    // 164, 9<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String((long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE)<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>    // 165, 55<a name="line.322"></a>
-<span class="sourceLineNo">323</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    // 166, 9<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(memStoreSizeMB<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>    // 167, 55<a name="line.327"></a>
-<span class="sourceLineNo">328</span>    jamonWriter.write("&lt;/td&gt;\n\n&lt;/tr&gt;\n");<a name="line.328"></a>
-<span class="sourceLineNo">329</span>    // 170, 1<a name="line.329"></a>
-<span class="sourceLineNo">330</span>    <a name="line.330"></a>
-<span class="sourceLineNo">331</span>        }  else {<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>    // 173, 1<a name="line.333"></a>
-<span class="sourceLineNo">334</span>    {<a name="line.334"></a>
-<span class="sourceLineNo">335</span>      // 173, 1<a name="line.335"></a>
-<span class="sourceLineNo">336</span>      __jamon_innerUnit__emptyStat(jamonWriter, serverName);<a name="line.336"></a>
-<span class="sourceLineNo">337</span>    }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    // 173, 40<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    jamonWriter.write("\n");<a name="line.339"></a>
-<span class="sourceLineNo">340</span>    // 174, 1<a name="line.340"></a>
-<span class="sourceLineNo">341</span>    <a name="line.341"></a>
-<span class="sourceLineNo">342</span>        }<a name="line.342"></a>
-<span class="sourceLineNo">343</span>}<a name="line.343"></a>
-<span class="sourceLineNo">344</span><a name="line.344"></a>
-<span class="sourceLineNo">345</span>    // 178, 1<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    jamonWriter.write("&lt;/table&gt;\n");<a name="line.346"></a>
-<span class="sourceLineNo">347</span>  }<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  <a name="line.348"></a>
-<span class="sourceLineNo">349</span>  <a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // 182, 1<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private void __jamon_innerUnit__requestStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>    throws java.io.IOException<a name="line.352"></a>
-<span class="sourceLineNo">353</span>  {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    // 186, 1<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Request Per Second&lt;/th&gt;\n    &lt;th&gt;Read Request Count&lt;/th&gt;\n    &lt;th&gt;Filtered Read Request Count&lt;/th&gt;\n    &lt;th&gt;Write Request Count&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    // 194, 1<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    <a name="line.357"></a>
-<span class="sourceLineNo">358</span>for (ServerName serverName: serverNames) {<a name="line.358"></a>
-<span class="sourceLineNo">359</span><a name="line.359"></a>
-<span class="sourceLineNo">360</span>ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.360"></a>
-<span class="sourceLineNo">361</span>if (sl != null) {<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  long readRequestCount = 0;<a name="line.362"></a>
-<span class="sourceLineNo">363</span>  long writeRequestCount = 0;<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  long filteredReadRequestCount = 0;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>    readRequestCount += rl.getReadRequestCount();<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    writeRequestCount += rl.getWriteRequestCount();<a name="line.367"></a>
-<span class="sourceLineNo">368</span>    filteredReadRequestCount += rl.getFilteredReadRequestCount();<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>    // 208, 1<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    jamonWriter.write("&lt;tr&gt;\n&lt;td&gt;");<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    // 209, 5<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      // 209, 5<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, sl);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>    }<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    // 209, 66<a name="line.378"></a>
-<span class="sourceLineNo">379</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    // 210, 5<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(sl.getRequestCountPerSecond()), jamonWriter);<a name="line.381"></a>
-<span class="sourceLineNo">382</span>    // 210, 40<a name="line.382"></a>
-<span class="sourceLineNo">383</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.383"></a>
-<span class="sourceLineNo">384</span>    // 211, 5<a name="line.384"></a>
-<span class="sourceLineNo">385</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(readRequestCount), jamonWriter);<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    // 211, 27<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    // 212, 5<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(filteredReadRequestCount), jamonWriter);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    // 212, 35<a name="line.390"></a>
-<span class="sourceLineNo">391</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.391"></a>
-<span class="sourceLineNo">392</span>    // 213, 5<a name="line.392"></a>
-<span class="sourceLineNo">393</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(writeRequestCount), jamonWriter);<a name="line.393"></a>
-<span class="sourceLineNo">394</span>    // 213, 28<a name="line.394"></a>
-<span class="sourceLineNo">395</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n");<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    // 215, 1<a name="line.396"></a>
-<span class="sourceLineNo">397</span>    <a name="line.397"></a>
-<span class="sourceLineNo">398</span>        }  else {<a name="line.398"></a>
-<span class="sourceLineNo">399</span>        <a name="line.399"></a>
-<span class="sourceLineNo">400</span>    // 218, 1<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    {<a name="line.401"></a>
-<span class="sourceLineNo">402</span>      // 218, 1<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      __jamon_innerUnit__emptyStat(jamonWriter, serverName);<a name="line.403"></a>
-<span class="sourceLineNo">404</span>    }<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    // 218, 40<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    jamonWriter.write("\n");<a name="line.406"></a>
-<span class="sourceLineNo">407</span>    // 219, 1<a name="line.407"></a>
-<span class="sourceLineNo">408</span>    <a name="line.408"></a>
-<span class="sourceLineNo">409</span>        }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>}<a name="line.410"></a>
-<span class="sourceLineNo">411</span><a name="line.411"></a>
-<span class="sourceLineNo">412</span>    // 223, 1<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    jamonWriter.write("&lt;/table&gt;\n");<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>  <a name="line.416"></a>
-<span class="sourceLineNo">417</span>  // 333, 1<a name="line.417"></a>
-<span class="sourceLineNo">418</span>  private void __jamon_innerUnit__serverNameLink(final java.io.Writer jamonWriter, final ServerName serverName, final ServerMetrics serverLoad)<a name="line.418"></a>
-<span class="sourceLineNo">419</span>    throws java.io.IOException<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  {<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // 338, 9<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    <a name="line.422"></a>
-<span class="sourceLineNo">423</span>        int infoPort = master.getRegionServerInfoPort(serverName);<a name="line.423"></a>
-<span class="sourceLineNo">424</span>        String url = "//" + serverName.getHostname() + ":" + infoPort + "/rs-status";<a name="line.424"></a>
-<span class="sourceLineNo">425</span>        <a name="line.425"></a>
-<span class="sourceLineNo">426</span>    // 343, 9<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    if (infoPort &gt; 0)<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      // 343, 28<a name="line.429"></a>
-<span class="sourceLineNo">430</span>      jamonWriter.write("\n            &lt;a href=\"");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      // 344, 22<a name="line.431"></a>
-<span class="sourceLineNo">432</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(url), jamonWriter);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      // 344, 31<a name="line.433"></a>
-<span class="sourceLineNo">434</span>      jamonWriter.write("\"&gt;");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>      // 344, 33<a name="line.435"></a>
-<span class="sourceLineNo">436</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getServerName()), jamonWriter);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>      // 344, 65<a name="line.437"></a>
-<span class="sourceLineNo">438</span>      jamonWriter.write("&lt;/a&gt;\n        ");<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    }<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    // 345, 9<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    else<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    {<a name="line.442"></a>
-<span class="sourceLineNo">443</span>      // 345, 16<a name="line.443"></a>
-<span class="sourceLineNo">444</span>      jamonWriter.write("\n            ");<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      // 346, 13<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(serverName.getServerName()), jamonWriter);<a name="line.446"></a>
-<span class="sourceLineNo">447</span>      // 346, 45<a name="line.447"></a>
-<span class="sourceLineNo">448</span>      jamonWriter.write("\n        ");<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    }<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    // 347, 15<a name="line.450"></a>
-<span class="sourceLineNo">451</span>    jamonWriter.write("\n");<a name="line.451"></a>
-<span class="sourceLineNo">452</span>  }<a name="line.452"></a>
-<span class="sourceLineNo">453</span>  <a name="line.453"></a>
-<span class="sourceLineNo">454</span>  <a name="line.454"></a>
-<span class="sourceLineNo">455</span>  // 227, 1<a name="line.455"></a>
-<span class="sourceLineNo">456</span>  private void __jamon_innerUnit__storeStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.456"></a>
-<span class="sourceLineNo">457</span>    throws java.io.IOException<a name="line.457"></a>
-<span class="sourceLineNo">458</span>  {<a name="line.458"></a>
-<span class="sourceLineNo">459</span>    // 231, 1<a name="line.459"></a>
-<span class="sourceLineNo">460</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Num. Stores&lt;/th&gt;\n    &lt;th&gt;Num. Storefiles&lt;/th&gt;\n    &lt;th&gt;Storefile Size Uncompressed&lt;/th&gt;\n    &lt;th&gt;Storefile Size&lt;/th&gt;\n    &lt;th&gt;Index Size&lt;/th&gt;\n    &lt;th&gt;Bloom Size&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    // 241, 1<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    <a name="line.462"></a>
-<span class="sourceLineNo">463</span>for (ServerName serverName: serverNames) {<a name="line.463"></a>
-<span class="sourceLineNo">464</span><a name="line.464"></a>
-<span class="sourceLineNo">465</span>ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.465"></a>
-<span class="sourceLineNo">466</span>if (sl != null) {<a name="line.466"></a>
-<span class="sourceLineNo">467</span>  long storeCount = 0;<a name="line.467"></a>
-<span class="sourceLineNo">468</span>  long storeFileCount = 0;<a name="line.468"></a>
-<span class="sourceLineNo">469</span>  long storeUncompressedSizeMB = 0;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>  long storeFileSizeMB = 0;<a name="line.470"></a>
-<span class="sourceLineNo">471</span>  long totalStaticIndexSizeKB = 0;<a name="line.471"></a>
-<span class="sourceLineNo">472</span>  long totalStaticBloomSizeKB = 0;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>  for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    storeCount += rl.getStoreCount();<a name="line.474"></a>
-<span class="sourceLineNo">475</span>    storeFileCount += rl.getStoreFileCount();<a name="line.475"></a>
-<span class="sourceLineNo">476</span>    storeUncompressedSizeMB += rl.getUncompressedStoreFileSize().get(Size.Unit.MEGABYTE);<a name="line.476"></a>
-<span class="sourceLineNo">477</span>    storeFileSizeMB += rl.getStoreFileSize().get(Size.Unit.MEGABYTE);<a name="line.477"></a>
-<span class="sourceLineNo">478</span>    totalStaticIndexSizeKB += rl.getStoreFileUncompressedDataIndexSize().get(Size.Unit.KILOBYTE);<a name="line.478"></a>
-<span class="sourceLineNo">479</span>    totalStaticBloomSizeKB += rl.getBloomFilterSize().get(Size.Unit.KILOBYTE);<a name="line.479"></a>
-<span class="sourceLineNo">480</span>  }<a name="line.480"></a>
-<span class="sourceLineNo">481</span><a name="line.481"></a>
-<span class="sourceLineNo">482</span>    // 261, 1<a name="line.482"></a>
-<span class="sourceLineNo">483</span>    jamonWriter.write("&lt;tr&gt;\n&lt;td&gt;");<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    // 262, 5<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    {<a name="line.485"></a>
-<span class="sourceLineNo">486</span>      // 262, 5<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName, sl);<a name="line.487"></a>
-<span class="sourceLineNo">488</span>    }<a name="line.488"></a>
-<span class="sourceLineNo">489</span>    // 262, 66<a name="line.489"></a>
-<span class="sourceLineNo">490</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.490"></a>
-<span class="sourceLineNo">491</span>    // 263, 5<a name="line.491"></a>
-<span class="sourceLineNo">492</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(storeCount), jamonWriter);<a name="line.492"></a>
-<span class="sourceLineNo">493</span>    // 263, 21<a name="line.493"></a>
-<span class="sourceLineNo">494</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.494"></a>
-<span class="sourceLineNo">495</span>    // 264, 5<a name="line.495"></a>
-<span class="sourceLineNo">496</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(storeFileCount), jamonWriter);<a name="line.496"></a>
-<span class="sourceLineNo">497</span>    // 264, 25<a name="line.497"></a>
+<span class="sourceLineNo">134</span>    double requestsPerSecond = 0.0;<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    int numRegionsOnline = 0;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    long lastContact = 0;<a name="line.136"></a>
+<span class="sourceLineNo">137</span><a name="line.137"></a>
+<span class="sourceLineNo">138</span>    if (sl != null) {<a name="line.138"></a>
+<span class="sourceLineNo">139</span>        requestsPerSecond = sl.getRequestCountPerSecond();<a name="line.139"></a>
+<span class="sourceLineNo">140</span>        numRegionsOnline = sl.getRegionMetrics().size();<a name="line.140"></a>
+<span class="sourceLineNo">141</span>        totalRegions += sl.getRegionMetrics().size();<a name="line.141"></a>
+<span class="sourceLineNo">142</span>        totalRequestsPerSecond += sl.getRequestCountPerSecond();<a name="line.142"></a>
+<span class="sourceLineNo">143</span>        lastContact = (System.currentTimeMillis() - sl.getReportTimestamp())/1000;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    long startcode = serverName.getStartcode();<a name="line.145"></a>
+<span class="sourceLineNo">146</span><a name="line.146"></a>
+<span class="sourceLineNo">147</span>    // 120, 1<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    // 121, 9<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    {<a name="line.150"></a>
+<span class="sourceLineNo">151</span>      // 121, 9<a name="line.151"></a>
+<span class="sourceLineNo">152</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName);<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    // 121, 53<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    // 122, 9<a name="line.156"></a>
+<span class="sourceLineNo">157</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(new Date(startcode)), jamonWriter);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    // 122, 34<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    // 123, 9<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(lastContact, "s", 1)), jamonWriter);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    // 123, 71<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    // 124, 9<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(version), jamonWriter);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    // 124, 22<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.167"></a>
+<span class="sourceLineNo">168</span>    // 125, 9<a name="line.168"></a>
+<span class="sourceLineNo">169</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(String.format("%.0f", requestsPerSecond)), jamonWriter);<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    // 125, 55<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // 126, 9<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(numRegionsOnline), jamonWriter);<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    // 126, 31<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n");<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    // 128, 1<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>    // 131, 1<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    jamonWriter.write("&lt;tr&gt;&lt;td&gt;Total:");<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    // 131, 15<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(servers.size()), jamonWriter);<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    // 131, 35<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;&lt;/td&gt;\n&lt;td&gt;&lt;/td&gt;\n");<a name="line.185"></a>
+<span class="sourceLineNo">186</span>    // 134, 1<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    if (inconsistentNodeNum &gt; 0)<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    {<a name="line.188"></a>
+<span class="sourceLineNo">189</span>      // 134, 31<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      jamonWriter.write("\n  &lt;td style=\"color:red;\"&gt;");<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      // 135, 26<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(inconsistentNodeNum), jamonWriter);<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      // 135, 51<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      jamonWriter.write(" nodes with inconsistent version&lt;/td&gt;\n");<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    // 136, 1<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    else<a name="line.197"></a>
+<span class="sourceLineNo">198</span>    {<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      // 136, 8<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      jamonWriter.write("\n   &lt;td&gt;&lt;/td&gt;\n");<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    }<a name="line.201"></a>
+<span class="sourceLineNo">202</span>    // 138, 7<a name="line.202"></a>
+<span class="sourceLineNo">203</span>    jamonWriter.write("\n&lt;td&gt;");<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    // 139, 5<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRequestsPerSecond), jamonWriter);<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // 139, 33<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.207"></a>
+<span class="sourceLineNo">208</span>    // 140, 5<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalRegions), jamonWriter);<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    // 140, 23<a name="line.210"></a>
+<span class="sourceLineNo">211</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n&lt;/table&gt;\n");<a name="line.211"></a>
+<span class="sourceLineNo">212</span>  }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>  <a name="line.213"></a>
+<span class="sourceLineNo">214</span>  <a name="line.214"></a>
+<span class="sourceLineNo">215</span>  // 292, 1<a name="line.215"></a>
+<span class="sourceLineNo">216</span>  private void __jamon_innerUnit__compactionStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    throws java.io.IOException<a name="line.217"></a>
+<span class="sourceLineNo">218</span>  {<a name="line.218"></a>
+<span class="sourceLineNo">219</span>    // 296, 1<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Num. Compacting Cells&lt;/th&gt;\n    &lt;th&gt;Num. Compacted Cells&lt;/th&gt;\n    &lt;th&gt;Remaining Cells&lt;/th&gt;\n    &lt;th&gt;Compaction Progress&lt;/th&gt;\n&lt;/tr&gt;\n");<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    // 304, 1<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    <a name="line.222"></a>
+<span class="sourceLineNo">223</span>for (ServerName serverName: serverNames) {<a name="line.223"></a>
+<span class="sourceLineNo">224</span><a name="line.224"></a>
+<span class="sourceLineNo">225</span>ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.225"></a>
+<span class="sourceLineNo">226</span>if (sl != null) {<a name="line.226"></a>
+<span class="sourceLineNo">227</span>long totalCompactingCells = 0;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>long totalCompactedCells = 0;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.229"></a>
+<span class="sourceLineNo">230</span>  totalCompactingCells += rl.getCompactingCellCount();<a name="line.230"></a>
+<span class="sourceLineNo">231</span>  totalCompactedCells += rl.getCompactedCellCount();<a name="line.231"></a>
+<span class="sourceLineNo">232</span>}<a name="line.232"></a>
+<span class="sourceLineNo">233</span>String percentDone = "";<a name="line.233"></a>
+<span class="sourceLineNo">234</span>if  (totalCompactingCells &gt; 0) {<a name="line.234"></a>
+<span class="sourceLineNo">235</span>     percentDone = String.format("%.2f", 100 *<a name="line.235"></a>
+<span class="sourceLineNo">236</span>        ((float) totalCompactedCells / totalCompactingCells)) + "%";<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>    // 321, 1<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    jamonWriter.write("&lt;tr&gt;\n&lt;td&gt;");<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    // 322, 5<a name="line.241"></a>
+<span class="sourceLineNo">242</span>    {<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      // 322, 5<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName);<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    }<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    // 322, 49<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    // 323, 5<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactingCells), jamonWriter);<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    // 323, 31<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    // 324, 5<a name="line.252"></a>
+<span class="sourceLineNo">253</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactedCells), jamonWriter);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>    // 324, 30<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    // 325, 5<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(totalCompactingCells - totalCompactedCells), jamonWriter);<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    // 325, 53<a name="line.258"></a>
+<span class="sourceLineNo">259</span>    jamonWriter.write("&lt;/td&gt;\n&lt;td&gt;");<a name="line.259"></a>
+<span class="sourceLineNo">260</span>    // 326, 5<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(percentDone), jamonWriter);<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    // 326, 22<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    jamonWriter.write("&lt;/td&gt;\n&lt;/tr&gt;\n");<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    // 328, 1<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    <a name="line.265"></a>
+<span class="sourceLineNo">266</span>        }  else {<a name="line.266"></a>
+<span class="sourceLineNo">267</span>        <a name="line.267"></a>
+<span class="sourceLineNo">268</span>    // 331, 1<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    {<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      // 331, 1<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      __jamon_innerUnit__emptyStat(jamonWriter, serverName);<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    // 331, 40<a name="line.273"></a>
+<span class="sourceLineNo">274</span>    jamonWriter.write("\n");<a name="line.274"></a>
+<span class="sourceLineNo">275</span>    // 332, 1<a name="line.275"></a>
+<span class="sourceLineNo">276</span>    <a name="line.276"></a>
+<span class="sourceLineNo">277</span>    }<a name="line.277"></a>
+<span class="sourceLineNo">278</span>}<a name="line.278"></a>
+<span class="sourceLineNo">279</span><a name="line.279"></a>
+<span class="sourceLineNo">280</span>    // 336, 1<a name="line.280"></a>
+<span class="sourceLineNo">281</span>    jamonWriter.write("&lt;/table&gt;\n");<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>  // 420, 1<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  private void __jamon_innerUnit__emptyStat(final java.io.Writer jamonWriter, final ServerName serverName)<a name="line.286"></a>
+<span class="sourceLineNo">287</span>    throws java.io.IOException<a name="line.287"></a>
+<span class="sourceLineNo">288</span>  {<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    // 424, 5<a name="line.289"></a>
+<span class="sourceLineNo">290</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    // 425, 9<a name="line.291"></a>
+<span class="sourceLineNo">292</span>    {<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      // 425, 9<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName);<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    }<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    // 425, 53<a name="line.296"></a>
+<span class="sourceLineNo">297</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;td&gt;&lt;/td&gt;\n    &lt;/tr&gt;\n");<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>  // 145, 1<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  private void __jamon_innerUnit__memoryStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    throws java.io.IOException<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  {<a name="line.304"></a>
+<span class="sourceLineNo">305</span>    // 149, 1<a name="line.305"></a>
+<span class="sourceLineNo">306</span>    jamonWriter.write("&lt;table class=\"table table-striped\"&gt;\n&lt;tr&gt;\n    &lt;th&gt;ServerName&lt;/th&gt;\n    &lt;th&gt;Used Heap&lt;/th&gt;\n    &lt;th&gt;Max Heap&lt;/th&gt;\n    &lt;th&gt;Memstore Size&lt;/th&gt;\n\n&lt;/tr&gt;\n");<a name="line.306"></a>
+<span class="sourceLineNo">307</span>    // 157, 1<a name="line.307"></a>
+<span class="sourceLineNo">308</span>    <a name="line.308"></a>
+<span class="sourceLineNo">309</span>for (ServerName serverName: serverNames) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span><a name="line.310"></a>
+<span class="sourceLineNo">311</span>    ServerMetrics sl = master.getServerManager().getLoad(serverName);<a name="line.311"></a>
+<span class="sourceLineNo">312</span>    if (sl != null) {<a name="line.312"></a>
+<span class="sourceLineNo">313</span>      long memStoreSizeMB = 0;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>      for (RegionMetrics rl : sl.getRegionMetrics().values()) {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>        memStoreSizeMB += rl.getMemStoreSize().get(Size.Unit.MEGABYTE);<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>    // 167, 1<a name="line.318"></a>
+<span class="sourceLineNo">319</span>    jamonWriter.write("&lt;tr&gt;\n    &lt;td&gt;");<a name="line.319"></a>
+<span class="sourceLineNo">320</span>    // 168, 9<a name="line.320"></a>
+<span class="sourceLineNo">321</span>    {<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      // 168, 9<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      __jamon_innerUnit__serverNameLink(jamonWriter, serverName);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    }<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    // 168, 53<a name="line.325"></a>
+<span class="sourceLineNo">326</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.326"></a>
+<span class="sourceLineNo">327</span>    // 169, 9<a name="line.327"></a>
+<span class="sourceLineNo">328</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String((long) sl.getUsedHeapSize().get(Size.Unit.MEGABYTE)<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    // 170, 55<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.331"></a>
+<span class="sourceLineNo">332</span>    // 171, 9<a name="line.332"></a>
+<span class="sourceLineNo">333</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String((long) sl.getMaxHeapSize().get(Size.Unit.MEGABYTE)<a name="line.333"></a>
+<span class="sourceLineNo">334</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.334"></a>
+<span class="sourceLineNo">335</span>    // 172, 55<a name="line.335"></a>
+<span class="sourceLineNo">336</span>    jamonWriter.write("&lt;/td&gt;\n    &lt;td&gt;");<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    // 173, 9<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(TraditionalBinaryPrefix.long2String(memStoreSizeMB<a name="line.338"></a>
+<span class="sourceLineNo">339</span>      * TraditionalBinaryPrefix.MEGA.value, "B", 1)), jamonWriter);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>    // 174, 55<a name="line.340"></a>
+<span class="sourceLineNo">341</span>    jamonWriter.write("&lt;/td&gt;\n\n&lt;/tr&gt;\n");<a name="line.341"></a>
+<span class="sourceLineNo">342</span>    // 177, 1<a name="line.342"></a>
+<span class="sourceLineNo">343</span>    <a name="line.343"></a>
+<span class="sourceLineNo">344</span>        }  else {<a name="line.344"></a>
+<span class="sourceLineNo">345</span><a name="line.345"></a>
+<span class="sourceLineNo">346</span>    // 180, 1<a name="line.346"></a>
+<span class="sourceLineNo">347</span>    {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>      // 180, 1<a name="line.348"></a>
+<span class="sourceLineNo">349</span>      __jamon_innerUnit__emptyStat(jamonWriter, serverName);<a name="line.349"></a>
+<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    // 180, 40<a name="line.351"></a>
+<span class="sourceLineNo">352</span>    jamonWriter.write("\n");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>    // 181, 1<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    <a name="line.354"></a>
+<span class="sourceLineNo">355</span>        }<a name="line.355"></a>
+<span class="sourceLineNo">356</span>}<a name="line.356"></a>
+<span class="sourceLineNo">357</span><a name="line.357"></a>
+<span class="sourceLineNo">358</span>    // 185, 1<a name="line.358"></a>
+<span class="sourceLineNo">359</span>    jamonWriter.write("&lt;/table&gt;\n");<a name="line.359"></a>
+<span class="sourceLineNo">360</span>  }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>  <a name="line.361"></a>
+<span class="sourceLineNo">362</span>  <a name="line.362"></a>
+<span class="sourceLineNo">363</span>  // 339, 1<a name="line.363"></a>
+<span class="sourceLineNo">364</span>  private void __jamon_innerUnit__replicationStats(final java.io.Writer jamonWriter, final ServerName[] serverNames)<a name="line.364"></a>
+<span class="sourceLineNo">365</span>    throws java.io.IOException<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  {<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    // 343, 1<a name="line.367"></a>
+<span class="sourceLineNo">368</span>    <a name="line.368"></a>
+<span class="sourceLineNo">369</span>        HashMap&lt;String, List&lt;Pair&lt;ServerName, ReplicationLoadSource&gt;&gt;&gt; replicationLoadSourceMap<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            = master.getReplicationLoad(serverNames);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        List&lt;String&gt; peers = null;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        if (replicationLoadSourceMap != null &amp;&amp; replicationLoadSourceMap.size() &gt; 0){<a name="line.372"></a>
+<span class="sourceLineNo">373</span>            peers = new ArrayList&lt;&gt;(replicationLoadSourceMap.keySet());<a name="line.373"></a>
+<span class="sourceLineNo">374</span>            Collections.sort(peers);<a name="line.374"></a>
+<span class="sourceLineNo">375</span>        }<a name="line.375"></a>
+<span class="sourceLineNo">376</span><a name="line.376"></a>
+<span class="sourceLineNo">377</span>    // 353, 1<a name="line.377"></a>
+<span class="sourceLineNo">378</span>    if ((replicationLoadSourceMap != null &amp;&amp; replicationLoadSourceMap.size() &gt; 0) )<a name="line.378"></a>
+<span class="sourceLineNo">379</span>    {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      // 353, 82<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      jamonWriter.write("\n\n&lt;div class=\"tabbable\"&gt;\n    &lt;ul class=\"nav nav-tabs\"&gt;\n        ");<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      // 357, 9<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      <a name="line.383"></a>
+<span class="sourceLineNo">384</span>        String active = "active";<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        for (String peer : peers){<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        <a name="line.386"></a>
+<span class="sourceLineNo">387</span>      // 361, 13<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      jamonWriter.write("&lt;li class=");<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      // 361, 23<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(active), jamonWriter);<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      // 361, 35<a name="line.391"></a>
+<span class="sourceLineNo">392</span>      jamonWriter.write("&gt;&lt;a href=\"#tab_");<a name="line.392"></a>
+<span class="sourceLineNo">393</span>      // 361, 50<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // 361, 60<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      jamonWriter.write("\" data-toggle=\"tab\"&gt;Peer ");<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      // 361, 85<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      // 361, 95<a name="line.399"></a>
+<span class="sourceLineNo">400</span>      jamonWriter.write("&lt;/a&gt; &lt;/li&gt;\n        ");<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      // 362, 9<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      <a name="line.402"></a>
+<span class="sourceLineNo">403</span>        active = "";<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>      // 366, 5<a name="line.406"></a>
+<span class="sourceLineNo">407</span>      jamonWriter.write("&lt;/ul&gt;\n    &lt;div class=\"tab-content\"&gt;\n        ");<a name="line.407"></a>
+<span class="sourceLineNo">408</span>      // 368, 9<a name="line.408"></a>
+<span class="sourceLineNo">409</span>      <a name="line.409"></a>
+<span class="sourceLineNo">410</span>            active = "active";<a name="line.410"></a>
+<span class="sourceLineNo">411</span>            for (String peer : peers){<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        <a name="line.412"></a>
+<span class="sourceLineNo">413</span>      // 372, 13<a name="line.413"></a>
+<span class="sourceLineNo">414</span>      jamonWriter.write("&lt;div class=\"tab-pane ");<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      // 372, 34<a name="line.415"></a>
+<span class="sourceLineNo">416</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(active), jamonWriter);<a name="line.416"></a>
+<span class="sourceLineNo">417</span>      // 372, 46<a name="line.417"></a>
+<span class="sourceLineNo">418</span>      jamonWriter.write("\" id=\"tab_");<a name="line.418"></a>
+<span class="sourceLineNo">419</span>      // 372, 56<a name="line.419"></a>
+<span class="sourceLineNo">420</span>      org.jamon.escaping.Escaping.HTML.write(org.jamon.emit.StandardEmitter.valueOf(peer), jamonWriter);<a name="line.420"></a>
+<span class="sourceLineNo">421</span>      // 372, 66<a name="line.421"></a>
+<span class="sourceLineNo">422</span>      jamonWriter.write("\"&gt;\n                &lt;table class=\"table table-striped\"&gt;\n                    &lt;tr&gt;\n                        &lt;th&gt;Server&lt;/th&gt;\n                        &lt;th&gt;AgeOfLastShippedOp&lt;/th

<TRUNCATED>

[12/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
index 1a548ac..bbad25c 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html
@@ -16,853 +16,949 @@
 <span class="sourceLineNo">008</span>// 33, 1<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import java.io.IOException;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 34, 1<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 35, 1<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 36, 1<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 37, 1<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.HConstants;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 38, 1<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 39, 1<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.21"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>// 40, 1<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>// 41, 1<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>// 42, 1<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.27"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>// 43, 1<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.29"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 44, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 45, 1<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.33"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>// 46, 1<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.35"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>// 47, 1<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.37"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>// 48, 1<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.39"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>// 49, 1<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.41"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>// 50, 1<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.43"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>// 51, 1<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.45"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>// 52, 1<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.47"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>// 53, 1<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.49"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>// 54, 1<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.51"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>// 55, 1<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.53"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>// 56, 1<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.55"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>// 57, 1<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.57"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>// 58, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.util.StringUtils;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>public class MasterStatusTmplImpl<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  extends org.jamon.AbstractTemplateImpl<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  implements org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.Intf<a name="line.63"></a>
-<span class="sourceLineNo">064</span><a name="line.64"></a>
-<span class="sourceLineNo">065</span>{<a name="line.65"></a>
-<span class="sourceLineNo">066</span>  private final HMaster master;<a name="line.66"></a>
-<span class="sourceLineNo">067</span>  private final AssignmentManager assignmentManager;<a name="line.67"></a>
-<span class="sourceLineNo">068</span>  private final boolean catalogJanitorEnabled;<a name="line.68"></a>
-<span class="sourceLineNo">069</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.69"></a>
-<span class="sourceLineNo">070</span>  private final String filter;<a name="line.70"></a>
-<span class="sourceLineNo">071</span>  private final String format;<a name="line.71"></a>
-<span class="sourceLineNo">072</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.72"></a>
-<span class="sourceLineNo">073</span>  private final ServerName metaLocation;<a name="line.73"></a>
-<span class="sourceLineNo">074</span>  private final ServerManager serverManager;<a name="line.74"></a>
-<span class="sourceLineNo">075</span>  private final List&lt;ServerName&gt; servers;<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  // 70, 1<a name="line.76"></a>
-<span class="sourceLineNo">077</span>  <a name="line.77"></a>
-<span class="sourceLineNo">078</span>  public String formatZKString() {<a name="line.78"></a>
-<span class="sourceLineNo">079</span>    StringBuilder quorums = new StringBuilder();<a name="line.79"></a>
-<span class="sourceLineNo">080</span>    String zkQuorum = master.getZooKeeper().getQuorum();<a name="line.80"></a>
-<span class="sourceLineNo">081</span><a name="line.81"></a>
-<span class="sourceLineNo">082</span>    if (null == zkQuorum) {<a name="line.82"></a>
-<span class="sourceLineNo">083</span>      return quorums.toString();<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>    String[] zks = zkQuorum.split(",");<a name="line.86"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>// 59, 1<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>// 60, 1<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>// 61, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>public class MasterStatusTmplImpl<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  extends org.jamon.AbstractTemplateImpl<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  implements org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.Intf<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>  private final HMaster master;<a name="line.72"></a>
+<span class="sourceLineNo">073</span>  private final AssignmentManager assignmentManager;<a name="line.73"></a>
+<span class="sourceLineNo">074</span>  private final boolean catalogJanitorEnabled;<a name="line.74"></a>
+<span class="sourceLineNo">075</span>  private final Set&lt;ServerName&gt; deadServers;<a name="line.75"></a>
+<span class="sourceLineNo">076</span>  private final String filter;<a name="line.76"></a>
+<span class="sourceLineNo">077</span>  private final String format;<a name="line.77"></a>
+<span class="sourceLineNo">078</span>  private final Map&lt;String,Integer&gt; frags;<a name="line.78"></a>
+<span class="sourceLineNo">079</span>  private final ServerName metaLocation;<a name="line.79"></a>
+<span class="sourceLineNo">080</span>  private final ServerManager serverManager;<a name="line.80"></a>
+<span class="sourceLineNo">081</span>  private final List&lt;ServerName&gt; servers;<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  // 73, 1<a name="line.82"></a>
+<span class="sourceLineNo">083</span>  <a name="line.83"></a>
+<span class="sourceLineNo">084</span>  public String formatZKString() {<a name="line.84"></a>
+<span class="sourceLineNo">085</span>    StringBuilder quorums = new StringBuilder();<a name="line.85"></a>
+<span class="sourceLineNo">086</span>    String zkQuorum = master.getZooKeeper().getQuorum();<a name="line.86"></a>
 <span class="sourceLineNo">087</span><a name="line.87"></a>
-<span class="sourceLineNo">088</span>    if (zks.length == 0) {<a name="line.88"></a>
+<span class="sourceLineNo">088</span>    if (null == zkQuorum) {<a name="line.88"></a>
 <span class="sourceLineNo">089</span>      return quorums.toString();<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>    for(int i = 0; i &lt; zks.length; ++i) {<a name="line.92"></a>
-<span class="sourceLineNo">093</span>      quorums.append(zks[i].trim());<a name="line.93"></a>
-<span class="sourceLineNo">094</span><a name="line.94"></a>
-<span class="sourceLineNo">095</span>      if (i != (zks.length - 1)) {<a name="line.95"></a>
-<span class="sourceLineNo">096</span>        quorums.append("&lt;br/&gt;");<a name="line.96"></a>
-<span class="sourceLineNo">097</span>      }<a name="line.97"></a>
-<span class="sourceLineNo">098</span>    }<a name="line.98"></a>
-<span class="sourceLineNo">099</span><a name="line.99"></a>
-<span class="sourceLineNo">100</span>    return quorums.toString();<a name="line.100"></a>
-<span class="sourceLineNo">101</span>  }<a name="line.101"></a>
-<span class="sourceLineNo">102</span><a name="line.102"></a>
-<span class="sourceLineNo">103</span>  // 97, 1<a name="line.103"></a>
-<span class="sourceLineNo">104</span>  <a name="line.104"></a>
-<span class="sourceLineNo">105</span>  public static String getUserTables(HMaster master, List&lt;TableDescriptor&gt; tables){<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    if (master.isInitialized()){<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      try {<a name="line.107"></a>
-<span class="sourceLineNo">108</span>        Map&lt;String, TableDescriptor&gt; descriptorMap = master.getTableDescriptors().getAll();<a name="line.108"></a>
-<span class="sourceLineNo">109</span>        if (descriptorMap != null) {<a name="line.109"></a>
-<span class="sourceLineNo">110</span>          for (TableDescriptor desc : descriptorMap.values()) {<a name="line.110"></a>
-<span class="sourceLineNo">111</span>            if (!desc.getTableName().isSystemTable()) {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>             tables.add(desc);<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>      } catch (IOException e) {<a name="line.116"></a>
-<span class="sourceLineNo">117</span>        return "Got user tables error, " + e.getMessage();<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>    return null;<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>  protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.123"></a>
-<span class="sourceLineNo">124</span>  {<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    {<a name="line.126"></a>
-<span class="sourceLineNo">127</span>      p_implData.setAssignmentManager(null);<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    }<a name="line.128"></a>
-<span class="sourceLineNo">129</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    {<a name="line.130"></a>
-<span class="sourceLineNo">131</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    }<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.133"></a>
-<span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      p_implData.setDeadServers(null);<a name="line.135"></a>
-<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
-<span class="sourceLineNo">137</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    {<a name="line.138"></a>
-<span class="sourceLineNo">139</span>      p_implData.setFilter("general");<a name="line.139"></a>
-<span class="sourceLineNo">140</span>    }<a name="line.140"></a>
-<span class="sourceLineNo">141</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    {<a name="line.142"></a>
-<span class="sourceLineNo">143</span>      p_implData.setFormat("html");<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.145"></a>
-<span class="sourceLineNo">146</span>    {<a name="line.146"></a>
-<span class="sourceLineNo">147</span>      p_implData.setFrags(null);<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    {<a name="line.150"></a>
-<span class="sourceLineNo">151</span>      p_implData.setMetaLocation(null);<a name="line.151"></a>
-<span class="sourceLineNo">152</span>    }<a name="line.152"></a>
-<span class="sourceLineNo">153</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.153"></a>
-<span class="sourceLineNo">154</span>    {<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      p_implData.setServerManager(null);<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    }<a name="line.156"></a>
-<span class="sourceLineNo">157</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    {<a name="line.158"></a>
-<span class="sourceLineNo">159</span>      p_implData.setServers(null);<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    }<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    return p_implData;<a name="line.161"></a>
-<span class="sourceLineNo">162</span>  }<a name="line.162"></a>
-<span class="sourceLineNo">163</span>  public MasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.163"></a>
-<span class="sourceLineNo">164</span>  {<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    master = p_implData.getMaster();<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.167"></a>
-<span class="sourceLineNo">168</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.168"></a>
-<span class="sourceLineNo">169</span>    deadServers = p_implData.getDeadServers();<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    filter = p_implData.getFilter();<a name="line.170"></a>
-<span class="sourceLineNo">171</span>    format = p_implData.getFormat();<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    frags = p_implData.getFrags();<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    metaLocation = p_implData.getMetaLocation();<a name="line.173"></a>
-<span class="sourceLineNo">174</span>    serverManager = p_implData.getServerManager();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    servers = p_implData.getServers();<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>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    throws java.io.IOException<a name="line.179"></a>
-<span class="sourceLineNo">180</span>  {<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    // 61, 1<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    if (format.equals("json") )<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      // 61, 30<a name="line.184"></a>
-<span class="sourceLineNo">185</span>      jamonWriter.write("\n  ");<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // 62, 3<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      {<a name="line.187"></a>
-<span class="sourceLineNo">188</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.188"></a>
-<span class="sourceLineNo">189</span>        __jamon__var_0.setFilter(filter);<a name="line.189"></a>
-<span class="sourceLineNo">190</span>        __jamon__var_0.setFormat("json" );<a name="line.190"></a>
-<span class="sourceLineNo">191</span>        __jamon__var_0.renderNoFlush(jamonWriter);<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      }<a name="line.192"></a>
-<span class="sourceLineNo">193</span>      // 62, 68<a name="line.193"></a>
-<span class="sourceLineNo">194</span>      jamonWriter.write("\n  ");<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      // 63, 3<a name="line.195"></a>
-<span class="sourceLineNo">196</span>      return; <a name="line.196"></a>
-<span class="sourceLineNo">197</span>    }<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    // 64, 7<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    jamonWriter.write("\n");<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // 65, 1<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    <a name="line.201"></a>
-<span class="sourceLineNo">202</span>ServerManager serverManager = master.getServerManager();<a name="line.202"></a>
-<span class="sourceLineNo">203</span>AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.203"></a>
-<span class="sourceLineNo">204</span><a name="line.204"></a>
-<span class="sourceLineNo">205</span>    // 117, 1<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    jamonWriter.write("&lt;!DOCTYPE html&gt;\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;html lang=\"en\"&gt;\n  &lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;title&gt;");<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    // 122, 12<a name="line.207"></a>
-<span class="sourceLineNo">208</span>    if (master.isActiveMaster() )<a name="line.208"></a>
-<span class="sourceLineNo">209</span>    {<a name="line.209"></a>
-<span class="sourceLineNo">210</span>      // 122, 43<a name="line.210"></a>
-<span class="sourceLineNo">211</span>      jamonWriter.write("Master: ");<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    // 122, 51<a name="line.213"></a>
-<span class="sourceLineNo">214</span>    else<a name="line.214"></a>
+<span class="sourceLineNo">092</span>    String[] zks = zkQuorum.split(",");<a name="line.92"></a>
+<span class="sourceLineNo">093</span><a name="line.93"></a>
+<span class="sourceLineNo">094</span>    if (zks.length == 0) {<a name="line.94"></a>
+<span class="sourceLineNo">095</span>      return quorums.toString();<a name="line.95"></a>
+<span class="sourceLineNo">096</span>    }<a name="line.96"></a>
+<span class="sourceLineNo">097</span><a name="line.97"></a>
+<span class="sourceLineNo">098</span>    for(int i = 0; i &lt; zks.length; ++i) {<a name="line.98"></a>
+<span class="sourceLineNo">099</span>      quorums.append(zks[i].trim());<a name="line.99"></a>
+<span class="sourceLineNo">100</span><a name="line.100"></a>
+<span class="sourceLineNo">101</span>      if (i != (zks.length - 1)) {<a name="line.101"></a>
+<span class="sourceLineNo">102</span>        quorums.append("&lt;br/&gt;");<a name="line.102"></a>
+<span class="sourceLineNo">103</span>      }<a name="line.103"></a>
+<span class="sourceLineNo">104</span>    }<a name="line.104"></a>
+<span class="sourceLineNo">105</span><a name="line.105"></a>
+<span class="sourceLineNo">106</span>    return quorums.toString();<a name="line.106"></a>
+<span class="sourceLineNo">107</span>  }<a name="line.107"></a>
+<span class="sourceLineNo">108</span><a name="line.108"></a>
+<span class="sourceLineNo">109</span>  // 100, 1<a name="line.109"></a>
+<span class="sourceLineNo">110</span>  <a name="line.110"></a>
+<span class="sourceLineNo">111</span>  public static String getUserTables(HMaster master, List&lt;TableDescriptor&gt; tables){<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    if (master.isInitialized()){<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      try {<a name="line.113"></a>
+<span class="sourceLineNo">114</span>        Map&lt;String, TableDescriptor&gt; descriptorMap = master.getTableDescriptors().getAll();<a name="line.114"></a>
+<span class="sourceLineNo">115</span>        if (descriptorMap != null) {<a name="line.115"></a>
+<span class="sourceLineNo">116</span>          for (TableDescriptor desc : descriptorMap.values()) {<a name="line.116"></a>
+<span class="sourceLineNo">117</span>            if (!desc.getTableName().isSystemTable()) {<a name="line.117"></a>
+<span class="sourceLineNo">118</span>             tables.add(desc);<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>      } catch (IOException e) {<a name="line.122"></a>
+<span class="sourceLineNo">123</span>        return "Got user tables error, " + e.getMessage();<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>    return null;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>  }<a name="line.127"></a>
+<span class="sourceLineNo">128</span><a name="line.128"></a>
+<span class="sourceLineNo">129</span>  protected static org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData __jamon_setOptionalArguments(org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.129"></a>
+<span class="sourceLineNo">130</span>  {<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    if(! p_implData.getAssignmentManager__IsNotDefault())<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    {<a name="line.132"></a>
+<span class="sourceLineNo">133</span>      p_implData.setAssignmentManager(null);<a name="line.133"></a>
+<span class="sourceLineNo">134</span>    }<a name="line.134"></a>
+<span class="sourceLineNo">135</span>    if(! p_implData.getCatalogJanitorEnabled__IsNotDefault())<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    {<a name="line.136"></a>
+<span class="sourceLineNo">137</span>      p_implData.setCatalogJanitorEnabled(true);<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    if(! p_implData.getDeadServers__IsNotDefault())<a name="line.139"></a>
+<span class="sourceLineNo">140</span>    {<a name="line.140"></a>
+<span class="sourceLineNo">141</span>      p_implData.setDeadServers(null);<a name="line.141"></a>
+<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
+<span class="sourceLineNo">143</span>    if(! p_implData.getFilter__IsNotDefault())<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    {<a name="line.144"></a>
+<span class="sourceLineNo">145</span>      p_implData.setFilter("general");<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    }<a name="line.146"></a>
+<span class="sourceLineNo">147</span>    if(! p_implData.getFormat__IsNotDefault())<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>      p_implData.setFormat("html");<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    }<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    if(! p_implData.getFrags__IsNotDefault())<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    {<a name="line.152"></a>
+<span class="sourceLineNo">153</span>      p_implData.setFrags(null);<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    }<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    if(! p_implData.getMetaLocation__IsNotDefault())<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      p_implData.setMetaLocation(null);<a name="line.157"></a>
+<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
+<span class="sourceLineNo">159</span>    if(! p_implData.getServerManager__IsNotDefault())<a name="line.159"></a>
+<span class="sourceLineNo">160</span>    {<a name="line.160"></a>
+<span class="sourceLineNo">161</span>      p_implData.setServerManager(null);<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    if(! p_implData.getServers__IsNotDefault())<a name="line.163"></a>
+<span class="sourceLineNo">164</span>    {<a name="line.164"></a>
+<span class="sourceLineNo">165</span>      p_implData.setServers(null);<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    }<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    return p_implData;<a name="line.167"></a>
+<span class="sourceLineNo">168</span>  }<a name="line.168"></a>
+<span class="sourceLineNo">169</span>  public MasterStatusTmplImpl(org.jamon.TemplateManager p_templateManager, org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl.ImplData p_implData)<a name="line.169"></a>
+<span class="sourceLineNo">170</span>  {<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    super(p_templateManager, __jamon_setOptionalArguments(p_implData));<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    master = p_implData.getMaster();<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    assignmentManager = p_implData.getAssignmentManager();<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    catalogJanitorEnabled = p_implData.getCatalogJanitorEnabled();<a name="line.174"></a>
+<span class="sourceLineNo">175</span>    deadServers = p_implData.getDeadServers();<a name="line.175"></a>
+<span class="sourceLineNo">176</span>    filter = p_implData.getFilter();<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    format = p_implData.getFormat();<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    frags = p_implData.getFrags();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    metaLocation = p_implData.getMetaLocation();<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    serverManager = p_implData.getServerManager();<a name="line.180"></a>
+<span class="sourceLineNo">181</span>    servers = p_implData.getServers();<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>  @Override public void renderNoFlush(final java.io.Writer jamonWriter)<a name="line.184"></a>
+<span class="sourceLineNo">185</span>    throws java.io.IOException<a name="line.185"></a>
+<span class="sourceLineNo">186</span>  {<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    // 64, 1<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    if (format.equals("json") )<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    {<a name="line.189"></a>
+<span class="sourceLineNo">190</span>      // 64, 30<a name="line.190"></a>
+<span class="sourceLineNo">191</span>      jamonWriter.write("\n  ");<a name="line.191"></a>
+<span class="sourceLineNo">192</span>      // 65, 3<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      {<a name="line.193"></a>
+<span class="sourceLineNo">194</span>        org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_0 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.194"></a>
+<span class="sourceLineNo">195</span>        __jamon__var_0.setFilter(filter);<a name="line.195"></a>
+<span class="sourceLineNo">196</span>        __jamon__var_0.setFormat("json" );<a name="line.196"></a>
+<span class="sourceLineNo">197</span>        __jamon__var_0.renderNoFlush(jamonWriter);<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      }<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      // 65, 68<a name="line.199"></a>
+<span class="sourceLineNo">200</span>      jamonWriter.write("\n  ");<a name="line.200"></a>
+<span class="sourceLineNo">201</span>      // 66, 3<a name="line.201"></a>
+<span class="sourceLineNo">202</span>      return; <a name="line.202"></a>
+<span class="sourceLineNo">203</span>    }<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    // 67, 7<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    jamonWriter.write("\n");<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // 68, 1<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    <a name="line.207"></a>
+<span class="sourceLineNo">208</span>ServerManager serverManager = master.getServerManager();<a name="line.208"></a>
+<span class="sourceLineNo">209</span>AssignmentManager assignmentManager = master.getAssignmentManager();<a name="line.209"></a>
+<span class="sourceLineNo">210</span><a name="line.210"></a>
+<span class="sourceLineNo">211</span>    // 120, 1<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    jamonWriter.write("&lt;!DOCTYPE html&gt;\n&lt;?xml version=\"1.0\" encoding=\"UTF-8\" ?&gt;\n&lt;html lang=\"en\"&gt;\n  &lt;head&gt;\n    &lt;meta charset=\"utf-8\"&gt;\n    &lt;title&gt;");<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    // 125, 12<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    if (master.isActiveMaster() )<a name="line.214"></a>
 <span class="sourceLineNo">215</span>    {<a name="line.215"></a>
-<span class="sourceLineNo">216</span>      // 122, 58<a name="line.216"></a>
-<span class="sourceLineNo">217</span>      jamonWriter.write("Backup Master: ");<a name="line.217"></a>
+<span class="sourceLineNo">216</span>      // 125, 43<a name="line.216"></a>
+<span class="sourceLineNo">217</span>      jamonWriter.write("Master: ");<a name="line.217"></a>
 <span class="sourceLineNo">218</span>    }<a name="line.218"></a>
-<span class="sourceLineNo">219</span>    // 122, 79<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    jamonWriter.write("\n    ");<a name="line.220"></a>
-<span class="sourceLineNo">221</span>    // 123, 5<a name="line.221"></a>
-<span class="sourceLineNo">222</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    // 123, 47<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    jamonWriter.write("&lt;/title&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;meta name=\"description\" content=\"\"&gt;\n    &lt;link href=\"/static/css/bootstrap.min.css\" rel=\"stylesheet\"&gt;\n    &lt;link href=\"/static/css/bootstrap-theme.min.css\" rel=\"stylesheet\"&gt;\n    &lt;link href=\"/static/css/hbase.css\" rel=\"stylesheet\"&gt;\n  &lt;/head&gt;\n\n  &lt;body&gt;\n\n    &lt;div class=\"navbar  navbar-fixed-top navbar-default\"&gt;\n        &lt;div class=\"container-fluid\"&gt;\n            &lt;div class=\"navbar-header\"&gt;\n                &lt;button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\"&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                &lt;/button&g
 t;\n                &lt;a class=\"navbar-brand\" href=\"/master-status\"&gt;&lt;img src=\"/static/hbase_logo_small.png\" alt=\"HBase Logo\"/&gt;&lt;/a&gt;\n            &lt;/div&gt;\n            &lt;div class=\"collapse navbar-collapse\"&gt;\n                &lt;ul class=\"nav navbar-nav\"&gt;\n                &lt;li class=\"active\"&gt;&lt;a href=\"/\"&gt;Home&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/tablesDetailed.jsp\"&gt;Table Details&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.224"></a>
-<span class="sourceLineNo">225</span>    // 147, 17<a name="line.225"></a>
-<span class="sourceLineNo">226</span>    if (master.isActiveMaster() )<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    {<a name="line.227"></a>
-<span class="sourceLineNo">228</span>      // 147, 48<a name="line.228"></a>
-<span class="sourceLineNo">229</span>      jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/procedures.jsp\"&gt;Procedures &amp;amp; Locks&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    }<a name="line.230"></a>
-<span class="sourceLineNo">231</span>    // 149, 23<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/processMaster.jsp\"&gt;Process Metrics&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/logs/\"&gt;Local Logs&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/logLevel\"&gt;Log Level&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/dump\"&gt;Debug Dump&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/jmx\"&gt;Metrics Dump&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    // 155, 17<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    if (HBaseConfiguration.isShowConfInServlet())<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>      // 155, 64<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/conf\"&gt;HBase Configuration&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.237"></a>
-<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
-<span class="sourceLineNo">239</span>    // 157, 23<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    jamonWriter.write("\n               &lt;/ul&gt;\n            &lt;/div&gt;&lt;!--/.nav-collapse --&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n\n    &lt;div class=\"container-fluid content\"&gt;\n\t");<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    // 164, 2<a name="line.241"></a>
-<span class="sourceLineNo">242</span>    if (master.isActiveMaster() )<a name="line.242"></a>
-<span class="sourceLineNo">243</span>    {<a name="line.243"></a>
-<span class="sourceLineNo">244</span>      // 164, 33<a name="line.244"></a>
-<span class="sourceLineNo">245</span>      jamonWriter.write("\n        &lt;div class=\"row inner_header\"&gt;\n            &lt;div class=\"page-header\"&gt;\n                &lt;h1&gt;Master &lt;small&gt;");<a name="line.245"></a>
-<span class="sourceLineNo">246</span>      // 167, 35<a name="line.246"></a>
-<span class="sourceLineNo">247</span>      org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      // 167, 77<a name="line.248"></a>
-<span class="sourceLineNo">249</span>      jamonWriter.write("&lt;/small&gt;&lt;/h1&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n\n        &lt;div class=\"row\"&gt;\n        &lt;!-- Various warnings that cluster admins should be aware of --&gt;\n        ");<a name="line.249"></a>
-<span class="sourceLineNo">250</span>      // 173, 9<a name="line.250"></a>
-<span class="sourceLineNo">251</span>      if (JvmVersion.isBadJvmVersion() )<a name="line.251"></a>
-<span class="sourceLineNo">252</span>      {<a name="line.252"></a>
-<span class="sourceLineNo">253</span>        // 173, 45<a name="line.253"></a>
-<span class="sourceLineNo">254</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-error\"&gt;\n          Your current JVM version ");<a name="line.254"></a>
-<span class="sourceLineNo">255</span>        // 175, 36<a name="line.255"></a>
-<span class="sourceLineNo">256</span>        org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter);<a name="line.256"></a>
-<span class="sourceLineNo">257</span>        // 175, 76<a name="line.257"></a>
-<span class="sourceLineNo">258</span>        jamonWriter.write(" is known to be\n          unstable with HBase. Please see the\n          &lt;a href=\"http://hbase.apache.org/book.html#trouble.log.gc\"&gt;HBase Reference Guide&lt;/a&gt;\n          for details.\n          &lt;/div&gt;\n        ");<a name="line.258"></a>
-<span class="sourceLineNo">259</span>      }<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      // 180, 15<a name="line.260"></a>
-<span class="sourceLineNo">261</span>      jamonWriter.write("\n        ");<a name="line.261"></a>
-<span class="sourceLineNo">262</span>      // 181, 9<a name="line.262"></a>
-<span class="sourceLineNo">263</span>      if (master.isInitialized() &amp;&amp; !catalogJanitorEnabled )<a name="line.263"></a>
-<span class="sourceLineNo">264</span>      {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>        // 181, 65<a name="line.265"></a>
-<span class="sourceLineNo">266</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-error\"&gt;\n          Please note that your cluster is running with the CatalogJanitor disabled. It can be\n          re-enabled from the hbase shell by running the command 'catalogjanitor_switch true'\n          &lt;/div&gt;\n        ");<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      }<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      // 186, 15<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      jamonWriter.write("\n        ");<a name="line.269"></a>
-<span class="sourceLineNo">270</span>      // 187, 9<a name="line.270"></a>
-<span class="sourceLineNo">271</span>      if (master.isInMaintenanceMode() )<a name="line.271"></a>
-<span class="sourceLineNo">272</span>      {<a name="line.272"></a>
-<span class="sourceLineNo">273</span>        // 187, 45<a name="line.273"></a>
-<span class="sourceLineNo">274</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n          Your Master is in maintenance mode. This may be because of HBCK aborting while\n          running in repair mode. Please re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.274"></a>
-<span class="sourceLineNo">275</span>      }<a name="line.275"></a>
-<span class="sourceLineNo">276</span>      // 192, 15<a name="line.276"></a>
-<span class="sourceLineNo">277</span>      jamonWriter.write("\n        ");<a name="line.277"></a>
-<span class="sourceLineNo">278</span>      // 193, 9<a name="line.278"></a>
-<span class="sourceLineNo">279</span>      if (!master.isBalancerOn() )<a name="line.279"></a>
-<span class="sourceLineNo">280</span>      {<a name="line.280"></a>
-<span class="sourceLineNo">281</span>        // 193, 39<a name="line.281"></a>
-<span class="sourceLineNo">282</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            The Load Balancer is not enabled which will eventually cause performance degradation\n            in HBase as Regions will not be distributed across all RegionServers. The balancer\n            is only expected to be disabled during rolling upgrade scenarios.\n          &lt;/div&gt;\n        ");<a name="line.282"></a>
-<span class="sourceLineNo">283</span>      }<a name="line.283"></a>
-<span class="sourceLineNo">284</span>      // 199, 15<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      jamonWriter.write("\n        ");<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // 200, 9<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      if (!master.isSplitOrMergeEnabled(MasterSwitchType.SPLIT) )<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        // 200, 70<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            Region splits are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable splits from the HBase shell,\n            or re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      // 206, 15<a name="line.292"></a>
-<span class="sourceLineNo">293</span>      jamonWriter.write("\n        ");<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      // 207, 9<a name="line.294"></a>
-<span class="sourceLineNo">295</span>      if (!master.isSplitOrMergeEnabled(MasterSwitchType.MERGE) )<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      {<a name="line.296"></a>
-<span class="sourceLineNo">297</span>        // 207, 70<a name="line.297"></a>
-<span class="sourceLineNo">298</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            Region merges are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable merges from the HBase shell,\n            or re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.298"></a>
-<span class="sourceLineNo">299</span>      }<a name="line.299"></a>
-<span class="sourceLineNo">300</span>      // 213, 15<a name="line.300"></a>
-<span class="sourceLineNo">301</span>      jamonWriter.write("\n        ");<a name="line.301"></a>
-<span class="sourceLineNo">302</span>      // 214, 9<a name="line.302"></a>
-<span class="sourceLineNo">303</span>      if (master.getMasterCoprocessorHost().findCoprocessor("RSGroupAdminEndpoint") != null )<a name="line.303"></a>
-<span class="sourceLineNo">304</span>      {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>        // 214, 98<a name="line.305"></a>
-<span class="sourceLineNo">306</span>        jamonWriter.write("\n          &lt;section&gt;\n            &lt;h2&gt;RSGroup&lt;/h2&gt;\n            ");<a name="line.306"></a>
-<span class="sourceLineNo">307</span>        // 217, 13<a name="line.307"></a>
-<span class="sourceLineNo">308</span>        {<a name="line.308"></a>
-<span class="sourceLineNo">309</span>          org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl __jamon__var_1 = new org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl(this.getTemplateManager());<a name="line.309"></a>
-<span class="sourceLineNo">310</span>          __jamon__var_1.renderNoFlush(jamonWriter, master, serverManager);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>        }<a name="line.311"></a>
-<span class="sourceLineNo">312</span>        // 217, 79<a name="line.312"></a>
-<span class="sourceLineNo">313</span>        jamonWriter.write("\n          &lt;/section&gt;\n        ");<a name="line.313"></a>
-<span class="sourceLineNo">314</span>      }<a name="line.314"></a>
-<span class="sourceLineNo">315</span>      // 219, 15<a name="line.315"></a>
-<span class="sourceLineNo">316</span>      jamonWriter.write("\n        &lt;section&gt;\n            &lt;h2&gt;Region Servers&lt;/h2&gt;\n            ");<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // 222, 13<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      {<a name="line.318"></a>
-<span class="sourceLineNo">319</span>        org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl __jamon__var_2 = new org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl(this.getTemplateManager());<a name="line.319"></a>
-<span class="sourceLineNo">320</span>        __jamon__var_2.setServers(servers );<a name="line.320"></a>
-<span class="sourceLineNo">321</span>        __jamon__var_2.renderNoFlush(jamonWriter, master);<a name="line.321"></a>
-<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
-<span class="sourceLineNo">323</span>      // 222, 74<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      jamonWriter.write("\n\n            ");<a name="line.324"></a>
-<span class="sourceLineNo">325</span>      // 224, 13<a name="line.325"></a>
-<span class="sourceLineNo">326</span>      if ((deadServers != null) )<a name="line.326"></a>
-<span class="sourceLineNo">327</span>      {<a name="line.327"></a>
-<span class="sourceLineNo">328</span>        // 224, 42<a name="line.328"></a>
-<span class="sourceLineNo">329</span>        jamonWriter.write("\n                ");<a name="line.329"></a>
-<span class="sourceLineNo">330</span>        // 225, 17<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        {<a name="line.331"></a>
-<span class="sourceLineNo">332</span>          // 225, 17<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          __jamon_innerUnit__deadRegionServers(jamonWriter);<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        // 225, 40<a name="line.335"></a>
-<span class="sourceLineNo">336</span>        jamonWriter.write("\n            ");<a name="line.336"></a>
-<span class="sourceLineNo">337</span>      }<a name="line.337"></a>
-<span class="sourceLineNo">338</span>      // 226, 19<a name="line.338"></a>
-<span class="sourceLineNo">339</span>      jamonWriter.write("\n        &lt;/section&gt;\n        &lt;section&gt;\n            ");<a name="line.339"></a>
-<span class="sourceLineNo">340</span>      // 229, 13<a name="line.340"></a>
-<span class="sourceLineNo">341</span>      {<a name="line.341"></a>
-<span class="sourceLineNo">342</span>        org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_3 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager());<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        __jamon__var_3.renderNoFlush(jamonWriter, master );<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>      // 229, 58<a name="line.345"></a>
-<span class="sourceLineNo">346</span>      jamonWriter.write("\n        &lt;/section&gt;\n        &lt;section&gt;\n            &lt;h2&gt;Tables&lt;/h2&gt;\n            &lt;div class=\"tabbable\"&gt;\n                &lt;ul class=\"nav nav-pills\"&gt;\n                    &lt;li class=\"active\"&gt;\n                        &lt;a href=\"#tab_userTables\" data-toggle=\"tab\"&gt;User Tables&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li class=\"\"&gt;\n                        &lt;a href=\"#tab_catalogTables\" data-toggle=\"tab\"&gt;System Tables&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li class=\"\"&gt;\n                        &lt;a href=\"#tab_userSnapshots\" data-toggle=\"tab\"&gt;Snapshots&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\"&gt;\n                    &lt;div class=\"tab-pane active\" id=\"t
 ab_userTables\"&gt;\n                        ");<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      // 247, 25<a name="line.347"></a>
-<span class="sourceLineNo">348</span>      if ((metaLocation != null) )<a name="line.348"></a>
-<span class="sourceLineNo">349</span>      {<a name="line.349"></a>
-<span class="sourceLineNo">350</span>        // 247, 55<a name="line.350"></a>
-<span class="sourceLineNo">351</span>        jamonWriter.write("\n                            ");<a name="line.351"></a>
-<span class="sourceLineNo">352</span>        // 248, 29<a name="line.352"></a>
-<span class="sourceLineNo">353</span>        {<a name="line.353"></a>
-<span class="sourceLineNo">354</span>          // 248, 29<a name="line.354"></a>
-<span class="sourceLineNo">355</span>          __jamon_innerUnit__userTables(jamonWriter);<a name="line.355"></a>
-<span class="sourceLineNo">356</span>        }<a name="line.356"></a>
-<span class="sourceLineNo">357</span>        // 248, 45<a name="line.357"></a>
-<span class="sourceLineNo">358</span>        jamonWriter.write("\n                        ");<a name="line.358"></a>
-<span class="sourceLineNo">359</span>      }<a name="line.359"></a>
-<span class="sourceLineNo">360</span>      // 249, 31<a name="line.360"></a>
-<span class="sourceLineNo">361</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                    &lt;div class=\"tab-pane\" id=\"tab_catalogTables\"&gt;\n                        ");<a name="line.361"></a>
-<span class="sourceLineNo">362</span>      // 252, 25<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if ((metaLocation != null) )<a name="line.363"></a>
-<span class="sourceLineNo">364</span>      {<a name="line.364"></a>
-<span class="sourceLineNo">365</span>        // 252, 55<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        jamonWriter.write("\n                            ");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        // 253, 29<a name="line.367"></a>
-<span class="sourceLineNo">368</span>        {<a name="line.368"></a>
-<span class="sourceLineNo">369</span>          // 253, 29<a name="line.369"></a>
-<span class="sourceLineNo">370</span>          __jamon_innerUnit__catalogTables(jamonWriter);<a name="line.370"></a>
-<span class="sourceLineNo">371</span>        }<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        // 253, 48<a name="line.372"></a>
-<span class="sourceLineNo">373</span>        jamonWriter.write("\n                        ");<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      }<a name="line.374"></a>
-<span class="sourceLineNo">375</span>      // 254, 31<a name="line.375"></a>
-<span class="sourceLineNo">376</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                    &lt;div class=\"tab-pane\" id=\"tab_userSnapshots\"&gt;\n                        ");<a name="line.376"></a>
-<span class="sourceLineNo">377</span>      // 257, 25<a name="line.377"></a>
-<span class="sourceLineNo">378</span>      {<a name="line.378"></a>
-<span class="sourceLineNo">379</span>        // 257, 25<a name="line.379"></a>
-<span class="sourceLineNo">380</span>        __jamon_innerUnit__userSnapshots(jamonWriter);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>      }<a name="line.381"></a>
-<span class="sourceLineNo">382</span>      // 257, 44<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n        &lt;/section&gt;\n        ");<a name="line.383"></a>
-<span class="sourceLineNo">384</span>      // 262, 9<a name="line.384"></a>
-<span class="sourceLineNo">385</span>      if (master.getAssignmentManager() != null )<a name="line.385"></a>
-<span class="sourceLineNo">386</span>      {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>        // 262, 54<a name="line.387"></a>
-<span class="sourceLineNo">388</span>        jamonWriter.write("\n        ");<a name="line.388"></a>
-<span class="sourceLineNo">389</span>        // 263, 9<a name="line.389"></a>
-<span class="sourceLineNo">390</span>        {<a name="line.390"></a>
-<span class="sourceLineNo">391</span>          org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_4 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager());<a name="line.391"></a>
-<span class="sourceLineNo">392</span>          __jamon__var_4.renderNoFlush(jamonWriter, master.getAssignmentManager());<a name="line.392"></a>
-<span class="sourceLineNo">393</span>        }<a name="line.393"></a>
-<span class="sourceLineNo">394</span>        // 263, 90<a name="line.394"></a>
-<span class="sourceLineNo">395</span>        jamonWriter.write("\n        ");<a name="line.395"></a>
-<span class="sourceLineNo">396</span>      }<a name="line.396"></a>
-<span class="sourceLineNo">397</span>      // 264, 15<a name="line.397"></a>
-<span class="sourceLineNo">398</span>      jamonWriter.write("\n\t");<a name="line.398"></a>
-<span class="sourceLineNo">399</span>    }<a name="line.399"></a>
-<span class="sourceLineNo">400</span>    // 265, 2<a name="line.400"></a>
-<span class="sourceLineNo">401</span>    else<a name="line.401"></a>
-<span class="sourceLineNo">402</span>    {<a name="line.402"></a>
-<span class="sourceLineNo">403</span>      // 265, 9<a name="line.403"></a>
-<span class="sourceLineNo">404</span>      jamonWriter.write("\n        &lt;section&gt;\n            ");<a name="line.404"></a>
-<span class="sourceLineNo">405</span>      // 267, 13<a name="line.405"></a>
-<span class="sourceLineNo">406</span>      {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>        org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_5 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager());<a name="line.407"></a>
-<span class="sourceLineNo">408</span>        __jamon__var_5.renderNoFlush(jamonWriter, master );<a name="line.408"></a>
+<span class="sourceLineNo">219</span>    // 125, 51<a name="line.219"></a>
+<span class="sourceLineNo">220</span>    else<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    {<a name="line.221"></a>
+<span class="sourceLineNo">222</span>      // 125, 58<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      jamonWriter.write("Backup Master: ");<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    }<a name="line.224"></a>
+<span class="sourceLineNo">225</span>    // 125, 79<a name="line.225"></a>
+<span class="sourceLineNo">226</span>    jamonWriter.write("\n    ");<a name="line.226"></a>
+<span class="sourceLineNo">227</span>    // 126, 5<a name="line.227"></a>
+<span class="sourceLineNo">228</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    // 126, 47<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    jamonWriter.write("&lt;/title&gt;\n    &lt;meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\"&gt;\n    &lt;meta name=\"description\" content=\"\"&gt;\n    &lt;link href=\"/static/css/bootstrap.min.css\" rel=\"stylesheet\"&gt;\n    &lt;link href=\"/static/css/bootstrap-theme.min.css\" rel=\"stylesheet\"&gt;\n    &lt;link href=\"/static/css/hbase.css\" rel=\"stylesheet\"&gt;\n  &lt;/head&gt;\n\n  &lt;body&gt;\n\n    &lt;div class=\"navbar  navbar-fixed-top navbar-default\"&gt;\n        &lt;div class=\"container-fluid\"&gt;\n            &lt;div class=\"navbar-header\"&gt;\n                &lt;button type=\"button\" class=\"navbar-toggle\" data-toggle=\"collapse\" data-target=\".navbar-collapse\"&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                    &lt;span class=\"icon-bar\"&gt;&lt;/span&gt;\n                &lt;/button&g
 t;\n                &lt;a class=\"navbar-brand\" href=\"/master-status\"&gt;&lt;img src=\"/static/hbase_logo_small.png\" alt=\"HBase Logo\"/&gt;&lt;/a&gt;\n            &lt;/div&gt;\n            &lt;div class=\"collapse navbar-collapse\"&gt;\n                &lt;ul class=\"nav navbar-nav\"&gt;\n                &lt;li class=\"active\"&gt;&lt;a href=\"/\"&gt;Home&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/tablesDetailed.jsp\"&gt;Table Details&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    // 150, 17<a name="line.231"></a>
+<span class="sourceLineNo">232</span>    if (master.isActiveMaster() )<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    {<a name="line.233"></a>
+<span class="sourceLineNo">234</span>      // 150, 48<a name="line.234"></a>
+<span class="sourceLineNo">235</span>      jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/procedures.jsp\"&gt;Procedures &amp;amp; Locks&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.235"></a>
+<span class="sourceLineNo">236</span>    }<a name="line.236"></a>
+<span class="sourceLineNo">237</span>    // 152, 23<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/processMaster.jsp\"&gt;Process Metrics&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/logs/\"&gt;Local Logs&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/logLevel\"&gt;Log Level&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/dump\"&gt;Debug Dump&lt;/a&gt;&lt;/li&gt;\n                &lt;li&gt;&lt;a href=\"/jmx\"&gt;Metrics Dump&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    // 158, 17<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    if (HBaseConfiguration.isShowConfInServlet())<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>      // 158, 64<a name="line.242"></a>
+<span class="sourceLineNo">243</span>      jamonWriter.write("\n                &lt;li&gt;&lt;a href=\"/conf\"&gt;HBase Configuration&lt;/a&gt;&lt;/li&gt;\n                ");<a name="line.243"></a>
+<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
+<span class="sourceLineNo">245</span>    // 160, 23<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    jamonWriter.write("\n               &lt;/ul&gt;\n            &lt;/div&gt;&lt;!--/.nav-collapse --&gt;\n        &lt;/div&gt;\n    &lt;/div&gt;\n\n    &lt;div class=\"container-fluid content\"&gt;\n\t");<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    // 167, 2<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    if (master.isActiveMaster() )<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    {<a name="line.249"></a>
+<span class="sourceLineNo">250</span>      // 167, 33<a name="line.250"></a>
+<span class="sourceLineNo">251</span>      jamonWriter.write("\n        &lt;div class=\"row inner_header\"&gt;\n            &lt;div class=\"page-header\"&gt;\n                &lt;h1&gt;Master &lt;small&gt;");<a name="line.251"></a>
+<span class="sourceLineNo">252</span>      // 170, 35<a name="line.252"></a>
+<span class="sourceLineNo">253</span>      org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(master.getServerName().getHostname()), jamonWriter);<a name="line.253"></a>
+<span class="sourceLineNo">254</span>      // 170, 77<a name="line.254"></a>
+<span class="sourceLineNo">255</span>      jamonWriter.write("&lt;/small&gt;&lt;/h1&gt;\n            &lt;/div&gt;\n        &lt;/div&gt;\n\n        &lt;div class=\"row\"&gt;\n        &lt;!-- Various warnings that cluster admins should be aware of --&gt;\n        ");<a name="line.255"></a>
+<span class="sourceLineNo">256</span>      // 176, 9<a name="line.256"></a>
+<span class="sourceLineNo">257</span>      if (JvmVersion.isBadJvmVersion() )<a name="line.257"></a>
+<span class="sourceLineNo">258</span>      {<a name="line.258"></a>
+<span class="sourceLineNo">259</span>        // 176, 45<a name="line.259"></a>
+<span class="sourceLineNo">260</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-error\"&gt;\n          Your current JVM version ");<a name="line.260"></a>
+<span class="sourceLineNo">261</span>        // 178, 36<a name="line.261"></a>
+<span class="sourceLineNo">262</span>        org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(System.getProperty("java.version")), jamonWriter);<a name="line.262"></a>
+<span class="sourceLineNo">263</span>        // 178, 76<a name="line.263"></a>
+<span class="sourceLineNo">264</span>        jamonWriter.write(" is known to be\n          unstable with HBase. Please see the\n          &lt;a href=\"http://hbase.apache.org/book.html#trouble.log.gc\"&gt;HBase Reference Guide&lt;/a&gt;\n          for details.\n          &lt;/div&gt;\n        ");<a name="line.264"></a>
+<span class="sourceLineNo">265</span>      }<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      // 183, 15<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      jamonWriter.write("\n        ");<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      // 184, 9<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      if (master.isInitialized() &amp;&amp; !catalogJanitorEnabled )<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>        // 184, 65<a name="line.271"></a>
+<span class="sourceLineNo">272</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-error\"&gt;\n          Please note that your cluster is running with the CatalogJanitor disabled. It can be\n          re-enabled from the hbase shell by running the command 'catalogjanitor_switch true'\n          &lt;/div&gt;\n        ");<a name="line.272"></a>
+<span class="sourceLineNo">273</span>      }<a name="line.273"></a>
+<span class="sourceLineNo">274</span>      // 189, 15<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      jamonWriter.write("\n        ");<a name="line.275"></a>
+<span class="sourceLineNo">276</span>      // 190, 9<a name="line.276"></a>
+<span class="sourceLineNo">277</span>      if (master.isInMaintenanceMode() )<a name="line.277"></a>
+<span class="sourceLineNo">278</span>      {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>        // 190, 45<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n          Your Master is in maintenance mode. This may be because of HBCK aborting while\n          running in repair mode. Please re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // 195, 15<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      jamonWriter.write("\n        ");<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      // 196, 9<a name="line.284"></a>
+<span class="sourceLineNo">285</span>      if (!master.isBalancerOn() )<a name="line.285"></a>
+<span class="sourceLineNo">286</span>      {<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        // 196, 39<a name="line.287"></a>
+<span class="sourceLineNo">288</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            The Load Balancer is not enabled which will eventually cause performance degradation\n            in HBase as Regions will not be distributed across all RegionServers. The balancer\n            is only expected to be disabled during rolling upgrade scenarios.\n          &lt;/div&gt;\n        ");<a name="line.288"></a>
+<span class="sourceLineNo">289</span>      }<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      // 202, 15<a name="line.290"></a>
+<span class="sourceLineNo">291</span>      jamonWriter.write("\n        ");<a name="line.291"></a>
+<span class="sourceLineNo">292</span>      // 203, 9<a name="line.292"></a>
+<span class="sourceLineNo">293</span>      if (!master.isSplitOrMergeEnabled(MasterSwitchType.SPLIT) )<a name="line.293"></a>
+<span class="sourceLineNo">294</span>      {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>        // 203, 70<a name="line.295"></a>
+<span class="sourceLineNo">296</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            Region splits are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable splits from the HBase shell,\n            or re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.296"></a>
+<span class="sourceLineNo">297</span>      }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>      // 209, 15<a name="line.298"></a>
+<span class="sourceLineNo">299</span>      jamonWriter.write("\n        ");<a name="line.299"></a>
+<span class="sourceLineNo">300</span>      // 210, 9<a name="line.300"></a>
+<span class="sourceLineNo">301</span>      if (!master.isSplitOrMergeEnabled(MasterSwitchType.MERGE) )<a name="line.301"></a>
+<span class="sourceLineNo">302</span>      {<a name="line.302"></a>
+<span class="sourceLineNo">303</span>        // 210, 70<a name="line.303"></a>
+<span class="sourceLineNo">304</span>        jamonWriter.write("\n          &lt;div class=\"alert alert-warning\"&gt;\n            Region merges are disabled. This may be the result of HBCK aborting while\n            running in repair mode. Manually enable merges from the HBase shell,\n            or re-run HBCK in repair mode.\n          &lt;/div&gt;\n        ");<a name="line.304"></a>
+<span class="sourceLineNo">305</span>      }<a name="line.305"></a>
+<span class="sourceLineNo">306</span>      // 216, 15<a name="line.306"></a>
+<span class="sourceLineNo">307</span>      jamonWriter.write("\n        ");<a name="line.307"></a>
+<span class="sourceLineNo">308</span>      // 217, 9<a name="line.308"></a>
+<span class="sourceLineNo">309</span>      if (master.getMasterCoprocessorHost().findCoprocessor("RSGroupAdminEndpoint") != null )<a name="line.309"></a>
+<span class="sourceLineNo">310</span>      {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>        // 217, 98<a name="line.311"></a>
+<span class="sourceLineNo">312</span>        jamonWriter.write("\n          &lt;section&gt;\n            &lt;h2&gt;RSGroup&lt;/h2&gt;\n            ");<a name="line.312"></a>
+<span class="sourceLineNo">313</span>        // 220, 13<a name="line.313"></a>
+<span class="sourceLineNo">314</span>        {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>          org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl __jamon__var_1 = new org.apache.hadoop.hbase.tmpl.master.RSGroupListTmpl(this.getTemplateManager());<a name="line.315"></a>
+<span class="sourceLineNo">316</span>          __jamon__var_1.renderNoFlush(jamonWriter, master, serverManager);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>        }<a name="line.317"></a>
+<span class="sourceLineNo">318</span>        // 220, 79<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        jamonWriter.write("\n          &lt;/section&gt;\n        ");<a name="line.319"></a>
+<span class="sourceLineNo">320</span>      }<a name="line.320"></a>
+<span class="sourceLineNo">321</span>      // 222, 15<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      jamonWriter.write("\n        &lt;section&gt;\n            &lt;h2&gt;Region Servers&lt;/h2&gt;\n            ");<a name="line.322"></a>
+<span class="sourceLineNo">323</span>      // 225, 13<a name="line.323"></a>
+<span class="sourceLineNo">324</span>      {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl __jamon__var_2 = new org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl(this.getTemplateManager());<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        __jamon__var_2.setServers(servers );<a name="line.326"></a>
+<span class="sourceLineNo">327</span>        __jamon__var_2.renderNoFlush(jamonWriter, master);<a name="line.327"></a>
+<span class="sourceLineNo">328</span>      }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>      // 225, 74<a name="line.329"></a>
+<span class="sourceLineNo">330</span>      jamonWriter.write("\n\n            ");<a name="line.330"></a>
+<span class="sourceLineNo">331</span>      // 227, 13<a name="line.331"></a>
+<span class="sourceLineNo">332</span>      if ((deadServers != null) )<a name="line.332"></a>
+<span class="sourceLineNo">333</span>      {<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        // 227, 42<a name="line.334"></a>
+<span class="sourceLineNo">335</span>        jamonWriter.write("\n                ");<a name="line.335"></a>
+<span class="sourceLineNo">336</span>        // 228, 17<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        {<a name="line.337"></a>
+<span class="sourceLineNo">338</span>          // 228, 17<a name="line.338"></a>
+<span class="sourceLineNo">339</span>          __jamon_innerUnit__deadRegionServers(jamonWriter);<a name="line.339"></a>
+<span class="sourceLineNo">340</span>        }<a name="line.340"></a>
+<span class="sourceLineNo">341</span>        // 228, 40<a name="line.341"></a>
+<span class="sourceLineNo">342</span>        jamonWriter.write("\n            ");<a name="line.342"></a>
+<span class="sourceLineNo">343</span>      }<a name="line.343"></a>
+<span class="sourceLineNo">344</span>      // 229, 19<a name="line.344"></a>
+<span class="sourceLineNo">345</span>      jamonWriter.write("\n        &lt;/section&gt;\n        &lt;section&gt;\n            ");<a name="line.345"></a>
+<span class="sourceLineNo">346</span>      // 232, 13<a name="line.346"></a>
+<span class="sourceLineNo">347</span>      {<a name="line.347"></a>
+<span class="sourceLineNo">348</span>        org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl __jamon__var_3 = new org.apache.hadoop.hbase.tmpl.master.BackupMasterStatusTmpl(this.getTemplateManager());<a name="line.348"></a>
+<span class="sourceLineNo">349</span>        __jamon__var_3.renderNoFlush(jamonWriter, master );<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      }<a name="line.350"></a>
+<span class="sourceLineNo">351</span>      // 232, 58<a name="line.351"></a>
+<span class="sourceLineNo">352</span>      jamonWriter.write("\n        &lt;/section&gt;\n        &lt;section&gt;\n            &lt;h2&gt;Tables&lt;/h2&gt;\n            &lt;div class=\"tabbable\"&gt;\n                &lt;ul class=\"nav nav-pills\"&gt;\n                    &lt;li class=\"active\"&gt;\n                        &lt;a href=\"#tab_userTables\" data-toggle=\"tab\"&gt;User Tables&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li class=\"\"&gt;\n                        &lt;a href=\"#tab_catalogTables\" data-toggle=\"tab\"&gt;System Tables&lt;/a&gt;\n                    &lt;/li&gt;\n                    &lt;li class=\"\"&gt;\n                        &lt;a href=\"#tab_userSnapshots\" data-toggle=\"tab\"&gt;Snapshots&lt;/a&gt;\n                    &lt;/li&gt;\n                &lt;/ul&gt;\n                &lt;div class=\"tab-content\" style=\"padding-bottom: 9px; border-bottom: 1px solid #ddd;\"&gt;\n                    &lt;div class=\"tab-pane active\" id=\"t
 ab_userTables\"&gt;\n                        ");<a name="line.352"></a>
+<span class="sourceLineNo">353</span>      // 250, 25<a name="line.353"></a>
+<span class="sourceLineNo">354</span>      if ((metaLocation != null) )<a name="line.354"></a>
+<span class="sourceLineNo">355</span>      {<a name="line.355"></a>
+<span class="sourceLineNo">356</span>        // 250, 55<a name="line.356"></a>
+<span class="sourceLineNo">357</span>        jamonWriter.write("\n                            ");<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        // 251, 29<a name="line.358"></a>
+<span class="sourceLineNo">359</span>        {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>          // 251, 29<a name="line.360"></a>
+<span class="sourceLineNo">361</span>          __jamon_innerUnit__userTables(jamonWriter);<a name="line.361"></a>
+<span class="sourceLineNo">362</span>        }<a name="line.362"></a>
+<span class="sourceLineNo">363</span>        // 251, 45<a name="line.363"></a>
+<span class="sourceLineNo">364</span>        jamonWriter.write("\n                        ");<a name="line.364"></a>
+<span class="sourceLineNo">365</span>      }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>      // 252, 31<a name="line.366"></a>
+<span class="sourceLineNo">367</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                    &lt;div class=\"tab-pane\" id=\"tab_catalogTables\"&gt;\n                        ");<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      // 255, 25<a name="line.368"></a>
+<span class="sourceLineNo">369</span>      if ((metaLocation != null) )<a name="line.369"></a>
+<span class="sourceLineNo">370</span>      {<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        // 255, 55<a name="line.371"></a>
+<span class="sourceLineNo">372</span>        jamonWriter.write("\n                            ");<a name="line.372"></a>
+<span class="sourceLineNo">373</span>        // 256, 29<a name="line.373"></a>
+<span class="sourceLineNo">374</span>        {<a name="line.374"></a>
+<span class="sourceLineNo">375</span>          // 256, 29<a name="line.375"></a>
+<span class="sourceLineNo">376</span>          __jamon_innerUnit__catalogTables(jamonWriter);<a name="line.376"></a>
+<span class="sourceLineNo">377</span>        }<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        // 256, 48<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        jamonWriter.write("\n                        ");<a name="line.379"></a>
+<span class="sourceLineNo">380</span>      }<a name="line.380"></a>
+<span class="sourceLineNo">381</span>      // 257, 31<a name="line.381"></a>
+<span class="sourceLineNo">382</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                    &lt;div class=\"tab-pane\" id=\"tab_userSnapshots\"&gt;\n                        ");<a name="line.382"></a>
+<span class="sourceLineNo">383</span>      // 260, 25<a name="line.383"></a>
+<span class="sourceLineNo">384</span>      {<a name="line.384"></a>
+<span class="sourceLineNo">385</span>        // 260, 25<a name="line.385"></a>
+<span class="sourceLineNo">386</span>        __jamon_innerUnit__userSnapshots(jamonWriter);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>      }<a name="line.387"></a>
+<span class="sourceLineNo">388</span>      // 260, 44<a name="line.388"></a>
+<span class="sourceLineNo">389</span>      jamonWriter.write("\n                    &lt;/div&gt;\n                &lt;/div&gt;\n            &lt;/div&gt;\n        &lt;/section&gt;\n        &lt;section&gt;\n            &lt;h2&gt;Peers&lt;/h2&gt;\n            ");<a name="line.389"></a>
+<span class="sourceLineNo">390</span>      // 267, 13<a name="line.390"></a>
+<span class="sourceLineNo">391</span>      {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>        // 267, 13<a name="line.392"></a>
+<span class="sourceLineNo">393</span>        __jamon_innerUnit__peerConfigs(jamonWriter);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>      }<a name="line.394"></a>
+<span class="sourceLineNo">395</span>      // 267, 30<a name="line.395"></a>
+<span class="sourceLineNo">396</span>      jamonWriter.write("\n        &lt;/section&gt;\n        ");<a name="line.396"></a>
+<span class="sourceLineNo">397</span>      // 269, 9<a name="line.397"></a>
+<span class="sourceLineNo">398</span>      if (master.getAssignmentManager() != null )<a name="line.398"></a>
+<span class="sourceLineNo">399</span>      {<a name="line.399"></a>
+<span class="sourceLineNo">400</span>        // 269, 54<a name="line.400"></a>
+<span class="sourceLineNo">401</span>        jamonWriter.write("\n        ");<a name="line.401"></a>
+<span class="sourceLineNo">402</span>        // 270, 9<a name="line.402"></a>
+<span class="sourceLineNo">403</span>        {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>          org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl __jamon__var_4 = new org.apache.hadoop.hbase.tmpl.master.AssignmentManagerStatusTmpl(this.getTemplateManager());<a name="line.404"></a>
+<span class="sourceLineNo">405</span>          __jamon__var_4.renderNoFlush(jamonWriter, master.getAssignmentManager());<a name="line.405"></a>
+<span class="sourceLineNo">406</span>        }<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        // 270, 90<a name="line.407"></a>
+<span class="sourceLineNo">408</span>        jamonWriter.write("\n        ");<a name="line.408"></a>
 <span class="sourceLineNo">409</span>      }<a name="line.409"></a>
-<span class="sourceLineNo">410</span>      // 267, 58<a name="line.410"></a>
-<span class="sourceLineNo">411</span>      jamonWriter.write("\n        &lt;/section&gt;\n\t");<a name="line.411"></a>
+<span class="sourceLineNo">410</span>      // 271, 15<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      jamonWriter.write("\n\t");<a name="line.411"></a>
 <span class="sourceLineNo">412</span>    }<a name="line.412"></a>
-<span class="sourceLineNo">413</span>    // 269, 8<a name="line.413"></a>
-<span class="sourceLineNo">414</span>    jamonWriter.write("\n\n\n        &lt;section&gt;\n            ");<a name="line.414"></a>
-<span class="sourceLineNo">415</span>    // 273, 13<a name="line.415"></a>
-<span class="sourceLineNo">416</span>    {<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl __jamon__var_6 = new org.apache.hadoop.hbase.tmpl.common.TaskMonitorTmpl(this.getTemplateManager());<a name="line.417"></a>
-<span class="sourceLineNo">418</span>      __jamon__var_6.setFilter(filter );<a name="line.418"></a>
-<span class="sourceLineNo">419</span>      __jamon__var_6.renderNoFlush(jamonWriter);<a name="line.419"></a>
-<span class="sourceLineNo">420</span>    }<a name="line.420"></a>
-<span class="sourceLineNo">421</span>    // 273, 61<a name="line.421"></a>
-<span class="sourceLineNo">422</span>    jamonWriter.write("\n        &lt;/section&gt;\n\n        &lt;section&gt;\n            &lt;h2&gt;Software Attributes&lt;/h2&gt;\n            &lt;table id=\"attributes_table\" class=\"table table-striped\"&gt;\n                &lt;tr&gt;\n                    &lt;th&gt;Attribute Name&lt;/th&gt;\n                    &lt;th&gt;Value&lt;/th&gt;\n                    &lt;th&gt;Description&lt;/th&gt;\n                &lt;/tr&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;HBase Version&lt;/td&gt;\n                    &lt;td&gt;");<a name="line.422"></a>
-<span class="sourceLineNo">423</span>    // 286, 25<a name="line.423"></a>
-<span class="sourceLineNo">424</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getVersion()), jamonWriter);<a name="line.424"></a>
-<span class="sourceLineNo">425</span>    // 286, 84<a name="line.425"></a>
-<span class="sourceLineNo">426</span>    jamonWriter.write(", revision=");<a name="line.426"></a>
-<span class="sourceLineNo">427</span>    // 286, 95<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getRevision()), jamonWriter);<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    // 286, 155<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    jamonWriter.write("&lt;/td&gt;&lt;td&gt;HBase version and revision&lt;/td&gt;\n                &lt;/tr&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;HBase Compiled&lt;/td&gt;\n                    &lt;td&gt;");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    // 290, 25<a name="line.431"></a>
-<span class="sourceLineNo">432</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getDate()), jamonWriter);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>    // 290, 81<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    jamonWriter.write(", ");<a name="line.434"></a>
-<span class="sourceLineNo">435</span>    // 290, 83<a name="line.435"></a>
-<span class="sourceLineNo">436</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getUser()), jamonWriter);<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    // 290, 139<a name="line.437"></a>
-<span class="sourceLineNo">438</span>    jamonWriter.write("&lt;/td&gt;\n                    &lt;td&gt;When HBase version was compiled and by whom&lt;/td&gt;\n                &lt;/tr&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;HBase Source Checksum&lt;/td&gt;\n                    &lt;td&gt;");<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    // 295, 25<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.hbase.util.VersionInfo.getSrcChecksum()), jamonWriter);<a name="line.440"></a>
-<span class="sourceLineNo">441</span>    // 295, 88<a name="line.441"></a>
-<span class="sourceLineNo">442</span>    jamonWriter.write("&lt;/td&gt;\n                    &lt;td&gt;HBase source MD5 checksum&lt;/td&gt;\n                &lt;/tr&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;Hadoop Version&lt;/td&gt;\n                    &lt;td&gt;");<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    // 300, 25<a name="line.443"></a>
-<span class="sourceLineNo">444</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getVersion()), jamonWriter);<a name="line.444"></a>
-<span class="sourceLineNo">445</span>    // 300, 78<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    jamonWriter.write(", revision=");<a name="line.446"></a>
-<span class="sourceLineNo">447</span>    // 300, 89<a name="line.447"></a>
-<span class="sourceLineNo">448</span>    org.jamon.escaping.Escaping.NONE.write(org.jamon.emit.StandardEmitter.valueOf(org.apache.hadoop.util.VersionInfo.getRevision()), jamonWriter);<a name="line.448"></a>
-<span class="sourceLineNo">449</span>    // 300, 143<a name="line.449"></a>
-<span class="sourceLineNo">450</span>    jamonWriter.write("&lt;/td&gt;\n                    &lt;td&gt;Hadoop version and revision&lt;/td&gt;\n                &lt;/tr&gt;\n                &lt;tr&gt;\n                    &lt;td&gt;Hadoop Compiled&lt;/td&gt;\n                    &l

<TRUNCATED>

[19/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
index f5ac8fc..9931529 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
@@ -280,309 +280,303 @@
 <span class="sourceLineNo">272</span>      try {<a name="line.272"></a>
 <span class="sourceLineNo">273</span>        POOL.latchCountUp();<a name="line.273"></a>
 <span class="sourceLineNo">274</span>        if (runCleaner()) {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>          if (LOG.isTraceEnabled()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>            LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>        } else {<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          if (LOG.isTraceEnabled()) {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.trace("WALs outstanding under {}", oldFileDir);<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>      } finally {<a name="line.283"></a>
-<span class="sourceLineNo">284</span>        POOL.latchCountDown();<a name="line.284"></a>
-<span class="sourceLineNo">285</span>      }<a name="line.285"></a>
-<span class="sourceLineNo">286</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.286"></a>
-<span class="sourceLineNo">287</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.287"></a>
-<span class="sourceLineNo">288</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.290"></a>
-<span class="sourceLineNo">291</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.291"></a>
-<span class="sourceLineNo">292</span>      }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>    } else {<a name="line.293"></a>
-<span class="sourceLineNo">294</span>      if (LOG.isTraceEnabled()) {<a name="line.294"></a>
-<span class="sourceLineNo">295</span>        LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.295"></a>
-<span class="sourceLineNo">296</span>      }<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    }<a name="line.297"></a>
-<span class="sourceLineNo">298</span>  }<a name="line.298"></a>
-<span class="sourceLineNo">299</span><a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private void preRunCleaner() {<a name="line.300"></a>
-<span class="sourceLineNo">301</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<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>  public Boolean runCleaner() {<a name="line.304"></a>
-<span class="sourceLineNo">305</span>    preRunCleaner();<a name="line.305"></a>
-<span class="sourceLineNo">306</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.306"></a>
-<span class="sourceLineNo">307</span>    POOL.submit(task);<a name="line.307"></a>
-<span class="sourceLineNo">308</span>    return task.join();<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>  /**<a name="line.311"></a>
-<span class="sourceLineNo">312</span>   * Sort the given list in (descending) order of the space each element takes<a name="line.312"></a>
-<span class="sourceLineNo">313</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.313"></a>
-<span class="sourceLineNo">314</span>   */<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.315"></a>
-<span class="sourceLineNo">316</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>      // no need to sort for empty or single directory<a name="line.317"></a>
-<span class="sourceLineNo">318</span>      return;<a name="line.318"></a>
-<span class="sourceLineNo">319</span>    }<a name="line.319"></a>
-<span class="sourceLineNo">320</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.320"></a>
-<span class="sourceLineNo">321</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>      @Override<a name="line.323"></a>
-<span class="sourceLineNo">324</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.324"></a>
-<span class="sourceLineNo">325</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.325"></a>
-<span class="sourceLineNo">326</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.326"></a>
-<span class="sourceLineNo">327</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<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>      private long getSpace(FileStatus f) {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>        Long cached = directorySpaces.get(f);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>        if (cached != null) {<a name="line.332"></a>
-<span class="sourceLineNo">333</span>          return cached;<a name="line.333"></a>
-<span class="sourceLineNo">334</span>        }<a name="line.334"></a>
-<span class="sourceLineNo">335</span>        try {<a name="line.335"></a>
-<span class="sourceLineNo">336</span>          long space =<a name="line.336"></a>
-<span class="sourceLineNo">337</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.337"></a>
-<span class="sourceLineNo">338</span>          directorySpaces.put(f, space);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>          return space;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>        } catch (IOException e) {<a name="line.340"></a>
-<span class="sourceLineNo">341</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.341"></a>
-<span class="sourceLineNo">342</span>          return -1;<a name="line.342"></a>
-<span class="sourceLineNo">343</span>        }<a name="line.343"></a>
-<span class="sourceLineNo">344</span>      }<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    });<a name="line.345"></a>
-<span class="sourceLineNo">346</span>  }<a name="line.346"></a>
-<span class="sourceLineNo">347</span><a name="line.347"></a>
-<span class="sourceLineNo">348</span>  /**<a name="line.348"></a>
-<span class="sourceLineNo">349</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.349"></a>
-<span class="sourceLineNo">350</span>   * necessary.<a name="line.350"></a>
-<span class="sourceLineNo">351</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.351"></a>
-<span class="sourceLineNo">352</span>   * @return true iff successfully deleted all files<a name="line.352"></a>
-<span class="sourceLineNo">353</span>   */<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    if (files == null) {<a name="line.355"></a>
-<span class="sourceLineNo">356</span>      return true;<a name="line.356"></a>
-<span class="sourceLineNo">357</span>    }<a name="line.357"></a>
-<span class="sourceLineNo">358</span><a name="line.358"></a>
-<span class="sourceLineNo">359</span>    // first check to see if the path is valid<a name="line.359"></a>
-<span class="sourceLineNo">360</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.360"></a>
-<span class="sourceLineNo">361</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.361"></a>
-<span class="sourceLineNo">362</span>    for (FileStatus file : files) {<a name="line.362"></a>
-<span class="sourceLineNo">363</span>      if (validate(file.getPath())) {<a name="line.363"></a>
-<span class="sourceLineNo">364</span>        validFiles.add(file);<a name="line.364"></a>
-<span class="sourceLineNo">365</span>      } else {<a name="line.365"></a>
-<span class="sourceLineNo">366</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.366"></a>
-<span class="sourceLineNo">367</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>    // check each of the cleaners for the valid files<a name="line.372"></a>
-<span class="sourceLineNo">373</span>    for (T cleaner : cleanersChain) {<a name="line.373"></a>
-<span class="sourceLineNo">374</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.374"></a>
-<span class="sourceLineNo">375</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.375"></a>
-<span class="sourceLineNo">376</span>            + this.oldFileDir);<a name="line.376"></a>
-<span class="sourceLineNo">377</span>        return false;<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>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.380"></a>
-<span class="sourceLineNo">381</span><a name="line.381"></a>
-<span class="sourceLineNo">382</span>      // trace which cleaner is holding on to each file<a name="line.382"></a>
-<span class="sourceLineNo">383</span>      if (LOG.isTraceEnabled()) {<a name="line.383"></a>
-<span class="sourceLineNo">384</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.384"></a>
-<span class="sourceLineNo">385</span>        for (FileStatus file : deletableValidFiles) {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>          if (!filteredFileSet.contains(file)) {<a name="line.386"></a>
-<span class="sourceLineNo">387</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.395"></a>
-<span class="sourceLineNo">396</span>    return deleteFiles(filesToDelete) == files.size();<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>   * Delete the given files<a name="line.400"></a>
-<span class="sourceLineNo">401</span>   * @param filesToDelete files to delete<a name="line.401"></a>
-<span class="sourceLineNo">402</span>   * @return number of deleted files<a name="line.402"></a>
-<span class="sourceLineNo">403</span>   */<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.404"></a>
-<span class="sourceLineNo">405</span>    int deletedFileCount = 0;<a name="line.405"></a>
-<span class="sourceLineNo">406</span>    for (FileStatus file : filesToDelete) {<a name="line.406"></a>
-<span class="sourceLineNo">407</span>      Path filePath = file.getPath();<a name="line.407"></a>
-<span class="sourceLineNo">408</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.408"></a>
-<span class="sourceLineNo">409</span>      try {<a name="line.409"></a>
-<span class="sourceLineNo">410</span>        boolean success = this.fs.delete(filePath, false);<a name="line.410"></a>
-<span class="sourceLineNo">411</span>        if (success) {<a name="line.411"></a>
-<span class="sourceLineNo">412</span>          deletedFileCount++;<a name="line.412"></a>
-<span class="sourceLineNo">413</span>        } else {<a name="line.413"></a>
-<span class="sourceLineNo">414</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.414"></a>
-<span class="sourceLineNo">415</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.415"></a>
-<span class="sourceLineNo">416</span>        }<a name="line.416"></a>
-<span class="sourceLineNo">417</span>      } catch (IOException e) {<a name="line.417"></a>
-<span class="sourceLineNo">418</span>        e = e instanceof RemoteException ?<a name="line.418"></a>
-<span class="sourceLineNo">419</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>        LOG.warn("Error while deleting: " + filePath, e);<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>    return deletedFileCount;<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>  @Override<a name="line.426"></a>
-<span class="sourceLineNo">427</span>  public synchronized void cleanup() {<a name="line.427"></a>
-<span class="sourceLineNo">428</span>    for (T lc : this.cleanersChain) {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>      try {<a name="line.429"></a>
-<span class="sourceLineNo">430</span>        lc.stop("Exiting");<a name="line.430"></a>
-<span class="sourceLineNo">431</span>      } catch (Throwable t) {<a name="line.431"></a>
-<span class="sourceLineNo">432</span>        LOG.warn("Stopping", t);<a name="line.432"></a>
-<span class="sourceLineNo">433</span>      }<a name="line.433"></a>
-<span class="sourceLineNo">434</span>    }<a name="line.434"></a>
-<span class="sourceLineNo">435</span>  }<a name="line.435"></a>
-<span class="sourceLineNo">436</span><a name="line.436"></a>
-<span class="sourceLineNo">437</span>  @VisibleForTesting<a name="line.437"></a>
-<span class="sourceLineNo">438</span>  int getChorePoolSize() {<a name="line.438"></a>
-<span class="sourceLineNo">439</span>    return POOL.size;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>  }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>  /**<a name="line.442"></a>
-<span class="sourceLineNo">443</span>   * @param enabled<a name="line.443"></a>
-<span class="sourceLineNo">444</span>   */<a name="line.444"></a>
-<span class="sourceLineNo">445</span>  public boolean setEnabled(final boolean enabled) {<a name="line.445"></a>
-<span class="sourceLineNo">446</span>    return this.enabled.getAndSet(enabled);<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 boolean getEnabled() { return this.enabled.get();<a name="line.449"></a>
-<span class="sourceLineNo">450</span>  }<a name="line.450"></a>
-<span class="sourceLineNo">451</span><a name="line.451"></a>
-<span class="sourceLineNo">452</span>  private interface Action&lt;T&gt; {<a name="line.452"></a>
-<span class="sourceLineNo">453</span>    T act() throws IOException;<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>  /**<a name="line.456"></a>
-<span class="sourceLineNo">457</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.457"></a>
-<span class="sourceLineNo">458</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.458"></a>
-<span class="sourceLineNo">459</span>   */<a name="line.459"></a>
-<span class="sourceLineNo">460</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.460"></a>
-<span class="sourceLineNo">461</span>    private final Path dir;<a name="line.461"></a>
-<span class="sourceLineNo">462</span>    private final boolean root;<a name="line.462"></a>
-<span class="sourceLineNo">463</span><a name="line.463"></a>
-<span class="sourceLineNo">464</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.464"></a>
-<span class="sourceLineNo">465</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.468"></a>
-<span class="sourceLineNo">469</span>      this.dir = dir;<a name="line.469"></a>
-<span class="sourceLineNo">470</span>      this.root = root;<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>    @Override<a name="line.473"></a>
-<span class="sourceLineNo">474</span>    protected Boolean compute() {<a name="line.474"></a>
-<span class="sourceLineNo">475</span>      LOG.debug("Cleaning under {}", dir);<a name="line.475"></a>
-<span class="sourceLineNo">476</span>      List&lt;FileStatus&gt; subDirs;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>      List&lt;FileStatus&gt; files;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>      try {<a name="line.478"></a>
-<span class="sourceLineNo">479</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.479"></a>
-<span class="sourceLineNo">480</span>        // which will fall through to succeeding.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.481"></a>
-<span class="sourceLineNo">482</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      } catch (IOException ioe) {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>        return false;<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>      boolean nullSubDirs = subDirs == null;<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      if (nullSubDirs) {<a name="line.489"></a>
-<span class="sourceLineNo">490</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.490"></a>
-<span class="sourceLineNo">491</span>      }<a name="line.491"></a>
-<span class="sourceLineNo">492</span>      if (files == null) {<a name="line.492"></a>
-<span class="sourceLineNo">493</span>        LOG.trace("There is no file under {}", dir);<a name="line.493"></a>
-<span class="sourceLineNo">494</span>      }<a name="line.494"></a>
-<span class="sourceLineNo">495</span><a name="line.495"></a>
-<span class="sourceLineNo">496</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.496"></a>
-<span class="sourceLineNo">497</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      if (!nullSubDirs) {<a name="line.498"></a>
-<span class="sourceLineNo">499</span>        sortByConsumedSpace(subDirs);<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        for (FileStatus subdir : subDirs) {<a name="line.500"></a>
-<span class="sourceLineNo">501</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.501"></a>
-<span class="sourceLineNo">502</span>          tasks.add(task);<a name="line.502"></a>
-<span class="sourceLineNo">503</span>          task.fork();<a name="line.503"></a>
-<span class="sourceLineNo">504</span>        }<a name="line.504"></a>
-<span class="sourceLineNo">505</span>      }<a name="line.505"></a>
-<span class="sourceLineNo">506</span><a name="line.506"></a>
-<span class="sourceLineNo">507</span>      boolean result = true;<a name="line.507"></a>
-<span class="sourceLineNo">508</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.508"></a>
-<span class="sourceLineNo">509</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.509"></a>
-<span class="sourceLineNo">510</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // it is not the root dir, then task will try to delete it.<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      if (result &amp;&amp; !root) {<a name="line.512"></a>
-<span class="sourceLineNo">513</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.513"></a>
-<span class="sourceLineNo">514</span>      }<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      return result;<a name="line.515"></a>
-<span class="sourceLineNo">516</span>    }<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>    /**<a name="line.518"></a>
-<span class="sourceLineNo">519</span>     * Get FileStatus with filter.<a name="line.519"></a>
-<span class="sourceLineNo">520</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>     * even though status is empty but not null.<a name="line.521"></a>
-<span class="sourceLineNo">522</span>     * @param function a filter function<a name="line.522"></a>
-<span class="sourceLineNo">523</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.523"></a>
-<span class="sourceLineNo">524</span>     * @throws IOException if there's an error other than dir not existing<a name="line.524"></a>
-<span class="sourceLineNo">525</span>     */<a name="line.525"></a>
-<span class="sourceLineNo">526</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.526"></a>
-<span class="sourceLineNo">527</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.527"></a>
-<span class="sourceLineNo">528</span>    }<a name="line.528"></a>
-<span class="sourceLineNo">529</span><a name="line.529"></a>
-<span class="sourceLineNo">530</span>    /**<a name="line.530"></a>
-<span class="sourceLineNo">531</span>     * Perform a delete on a specified type.<a name="line.531"></a>
-<span class="sourceLineNo">532</span>     * @param deletion a delete<a name="line.532"></a>
-<span class="sourceLineNo">533</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.533"></a>
-<span class="sourceLineNo">534</span>     * @return true if it deleted successfully, false otherwise<a name="line.534"></a>
-<span class="sourceLineNo">535</span>     */<a name="line.535"></a>
-<span class="sourceLineNo">536</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.536"></a>
-<span class="sourceLineNo">537</span>      boolean deleted;<a name="line.537"></a>
-<span class="sourceLineNo">538</span>      try {<a name="line.538"></a>
-<span class="sourceLineNo">539</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        deleted = deletion.act();<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.542"></a>
-<span class="sourceLineNo">543</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.543"></a>
-<span class="sourceLineNo">544</span>        // message below.<a name="line.544"></a>
-<span class="sourceLineNo">545</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.545"></a>
-<span class="sourceLineNo">546</span>            "exception details at TRACE.", dir);<a name="line.546"></a>
-<span class="sourceLineNo">547</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>        deleted = false;<a name="line.548"></a>
-<span class="sourceLineNo">549</span>      } catch (IOException ioe) {<a name="line.549"></a>
-<span class="sourceLineNo">550</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.550"></a>
-<span class="sourceLineNo">551</span>                  "happening, use following exception when asking on mailing list.",<a name="line.551"></a>
-<span class="sourceLineNo">552</span>                  type, dir, ioe);<a name="line.552"></a>
-<span class="sourceLineNo">553</span>        deleted = false;<a name="line.553"></a>
-<span class="sourceLineNo">554</span>      }<a name="line.554"></a>
-<span class="sourceLineNo">555</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.555"></a>
-<span class="sourceLineNo">556</span>      return deleted;<a name="line.556"></a>
-<span class="sourceLineNo">557</span>    }<a name="line.557"></a>
-<span class="sourceLineNo">558</span><a name="line.558"></a>
-<span class="sourceLineNo">559</span>    /**<a name="line.559"></a>
-<span class="sourceLineNo">560</span>     * Get cleaner results of subdirs.<a name="line.560"></a>
-<span class="sourceLineNo">561</span>     * @param tasks subdirs cleaner tasks<a name="line.561"></a>
-<span class="sourceLineNo">562</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.562"></a>
-<span class="sourceLineNo">563</span>     * @throws IOException something happen during computation<a name="line.563"></a>
-<span class="sourceLineNo">564</span>     */<a name="line.564"></a>
-<span class="sourceLineNo">565</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.565"></a>
-<span class="sourceLineNo">566</span>      boolean cleaned = true;<a name="line.566"></a>
-<span class="sourceLineNo">567</span>      try {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>        for (CleanerTask task : tasks) {<a name="line.568"></a>
-<span class="sourceLineNo">569</span>          cleaned &amp;= task.get();<a name="line.569"></a>
-<span class="sourceLineNo">570</span>        }<a name="line.570"></a>
-<span class="sourceLineNo">571</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.571"></a>
-<span class="sourceLineNo">572</span>        throw new IOException(e);<a name="line.572"></a>
-<span class="sourceLineNo">573</span>      }<a name="line.573"></a>
-<span class="sourceLineNo">574</span>      return cleaned;<a name="line.574"></a>
-<span class="sourceLineNo">575</span>    }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>  }<a name="line.576"></a>
-<span class="sourceLineNo">577</span>}<a name="line.577"></a>
+<span class="sourceLineNo">275</span>          LOG.trace("Cleaned all WALs under {}", oldFileDir);<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        } else {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          LOG.trace("WALs outstanding under {}", oldFileDir);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>        }<a name="line.278"></a>
+<span class="sourceLineNo">279</span>      } finally {<a name="line.279"></a>
+<span class="sourceLineNo">280</span>        POOL.latchCountDown();<a name="line.280"></a>
+<span class="sourceLineNo">281</span>      }<a name="line.281"></a>
+<span class="sourceLineNo">282</span>      // After each cleaner chore, checks if received reconfigure notification while cleaning.<a name="line.282"></a>
+<span class="sourceLineNo">283</span>      // First in cleaner turns off notification, to avoid another cleaner updating pool again.<a name="line.283"></a>
+<span class="sourceLineNo">284</span>      if (POOL.reconfigNotification.compareAndSet(true, false)) {<a name="line.284"></a>
+<span class="sourceLineNo">285</span>        // This cleaner is waiting for other cleaners finishing their jobs.<a name="line.285"></a>
+<span class="sourceLineNo">286</span>        // To avoid missing next chore, only wait 0.8 * period, then shutdown.<a name="line.286"></a>
+<span class="sourceLineNo">287</span>        POOL.updatePool((long) (0.8 * getTimeUnit().toMillis(getPeriod())));<a name="line.287"></a>
+<span class="sourceLineNo">288</span>      }<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    } else {<a name="line.289"></a>
+<span class="sourceLineNo">290</span>      LOG.trace("Cleaner chore disabled! Not cleaning.");<a name="line.290"></a>
+<span class="sourceLineNo">291</span>    }<a name="line.291"></a>
+<span class="sourceLineNo">292</span>  }<a name="line.292"></a>
+<span class="sourceLineNo">293</span><a name="line.293"></a>
+<span class="sourceLineNo">294</span>  private void preRunCleaner() {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    cleanersChain.forEach(FileCleanerDelegate::preClean);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>  }<a name="line.296"></a>
+<span class="sourceLineNo">297</span><a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public Boolean runCleaner() {<a name="line.298"></a>
+<span class="sourceLineNo">299</span>    preRunCleaner();<a name="line.299"></a>
+<span class="sourceLineNo">300</span>    CleanerTask task = new CleanerTask(this.oldFileDir, true);<a name="line.300"></a>
+<span class="sourceLineNo">301</span>    POOL.submit(task);<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    return task.join();<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>   * Sort the given list in (descending) order of the space each element takes<a name="line.306"></a>
+<span class="sourceLineNo">307</span>   * @param dirs the list to sort, element in it should be directory (not file)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>   */<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  private void sortByConsumedSpace(List&lt;FileStatus&gt; dirs) {<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    if (dirs == null || dirs.size() &lt; 2) {<a name="line.310"></a>
+<span class="sourceLineNo">311</span>      // no need to sort for empty or single directory<a name="line.311"></a>
+<span class="sourceLineNo">312</span>      return;<a name="line.312"></a>
+<span class="sourceLineNo">313</span>    }<a name="line.313"></a>
+<span class="sourceLineNo">314</span>    dirs.sort(new Comparator&lt;FileStatus&gt;() {<a name="line.314"></a>
+<span class="sourceLineNo">315</span>      HashMap&lt;FileStatus, Long&gt; directorySpaces = new HashMap&lt;&gt;();<a name="line.315"></a>
+<span class="sourceLineNo">316</span><a name="line.316"></a>
+<span class="sourceLineNo">317</span>      @Override<a name="line.317"></a>
+<span class="sourceLineNo">318</span>      public int compare(FileStatus f1, FileStatus f2) {<a name="line.318"></a>
+<span class="sourceLineNo">319</span>        long f1ConsumedSpace = getSpace(f1);<a name="line.319"></a>
+<span class="sourceLineNo">320</span>        long f2ConsumedSpace = getSpace(f2);<a name="line.320"></a>
+<span class="sourceLineNo">321</span>        return Long.compare(f2ConsumedSpace, f1ConsumedSpace);<a name="line.321"></a>
+<span class="sourceLineNo">322</span>      }<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>      private long getSpace(FileStatus f) {<a name="line.324"></a>
+<span class="sourceLineNo">325</span>        Long cached = directorySpaces.get(f);<a name="line.325"></a>
+<span class="sourceLineNo">326</span>        if (cached != null) {<a name="line.326"></a>
+<span class="sourceLineNo">327</span>          return cached;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>        }<a name="line.328"></a>
+<span class="sourceLineNo">329</span>        try {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>          long space =<a name="line.330"></a>
+<span class="sourceLineNo">331</span>              f.isDirectory() ? fs.getContentSummary(f.getPath()).getSpaceConsumed() : f.getLen();<a name="line.331"></a>
+<span class="sourceLineNo">332</span>          directorySpaces.put(f, space);<a name="line.332"></a>
+<span class="sourceLineNo">333</span>          return space;<a name="line.333"></a>
+<span class="sourceLineNo">334</span>        } catch (IOException e) {<a name="line.334"></a>
+<span class="sourceLineNo">335</span>          LOG.trace("Failed to get space consumed by path={}", f, e);<a name="line.335"></a>
+<span class="sourceLineNo">336</span>          return -1;<a name="line.336"></a>
+<span class="sourceLineNo">337</span>        }<a name="line.337"></a>
+<span class="sourceLineNo">338</span>      }<a name="line.338"></a>
+<span class="sourceLineNo">339</span>    });<a name="line.339"></a>
+<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
+<span class="sourceLineNo">341</span><a name="line.341"></a>
+<span class="sourceLineNo">342</span>  /**<a name="line.342"></a>
+<span class="sourceLineNo">343</span>   * Run the given files through each of the cleaners to see if it should be deleted, deleting it if<a name="line.343"></a>
+<span class="sourceLineNo">344</span>   * necessary.<a name="line.344"></a>
+<span class="sourceLineNo">345</span>   * @param files List of FileStatus for the files to check (and possibly delete)<a name="line.345"></a>
+<span class="sourceLineNo">346</span>   * @return true iff successfully deleted all files<a name="line.346"></a>
+<span class="sourceLineNo">347</span>   */<a name="line.347"></a>
+<span class="sourceLineNo">348</span>  private boolean checkAndDeleteFiles(List&lt;FileStatus&gt; files) {<a name="line.348"></a>
+<span class="sourceLineNo">349</span>    if (files == null) {<a name="line.349"></a>
+<span class="sourceLineNo">350</span>      return true;<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>    // first check to see if the path is valid<a name="line.353"></a>
+<span class="sourceLineNo">354</span>    List&lt;FileStatus&gt; validFiles = Lists.newArrayListWithCapacity(files.size());<a name="line.354"></a>
+<span class="sourceLineNo">355</span>    List&lt;FileStatus&gt; invalidFiles = Lists.newArrayList();<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    for (FileStatus file : files) {<a name="line.356"></a>
+<span class="sourceLineNo">357</span>      if (validate(file.getPath())) {<a name="line.357"></a>
+<span class="sourceLineNo">358</span>        validFiles.add(file);<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      } else {<a name="line.359"></a>
+<span class="sourceLineNo">360</span>        LOG.warn("Found a wrongly formatted file: " + file.getPath() + " - will delete it.");<a name="line.360"></a>
+<span class="sourceLineNo">361</span>        invalidFiles.add(file);<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>    Iterable&lt;FileStatus&gt; deletableValidFiles = validFiles;<a name="line.365"></a>
+<span class="sourceLineNo">366</span>    // check each of the cleaners for the valid files<a name="line.366"></a>
+<span class="sourceLineNo">367</span>    for (T cleaner : cleanersChain) {<a name="line.367"></a>
+<span class="sourceLineNo">368</span>      if (cleaner.isStopped() || this.getStopper().isStopped()) {<a name="line.368"></a>
+<span class="sourceLineNo">369</span>        LOG.warn("A file cleaner" + this.getName() + " is stopped, won't delete any more files in:"<a name="line.369"></a>
+<span class="sourceLineNo">370</span>            + this.oldFileDir);<a name="line.370"></a>
+<span class="sourceLineNo">371</span>        return false;<a name="line.371"></a>
+<span class="sourceLineNo">372</span>      }<a name="line.372"></a>
+<span class="sourceLineNo">373</span><a name="line.373"></a>
+<span class="sourceLineNo">374</span>      Iterable&lt;FileStatus&gt; filteredFiles = cleaner.getDeletableFiles(deletableValidFiles);<a name="line.374"></a>
+<span class="sourceLineNo">375</span><a name="line.375"></a>
+<span class="sourceLineNo">376</span>      // trace which cleaner is holding on to each file<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      if (LOG.isTraceEnabled()) {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        ImmutableSet&lt;FileStatus&gt; filteredFileSet = ImmutableSet.copyOf(filteredFiles);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>        for (FileStatus file : deletableValidFiles) {<a name="line.379"></a>
+<span class="sourceLineNo">380</span>          if (!filteredFileSet.contains(file)) {<a name="line.380"></a>
+<span class="sourceLineNo">381</span>            LOG.trace(file.getPath() + " is not deletable according to:" + cleaner);<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><a name="line.385"></a>
+<span class="sourceLineNo">386</span>      deletableValidFiles = filteredFiles;<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>    Iterable&lt;FileStatus&gt; filesToDelete = Iterables.concat(invalidFiles, deletableValidFiles);<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    return deleteFiles(filesToDelete) == files.size();<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>  /**<a name="line.393"></a>
+<span class="sourceLineNo">394</span>   * Delete the given files<a name="line.394"></a>
+<span class="sourceLineNo">395</span>   * @param filesToDelete files to delete<a name="line.395"></a>
+<span class="sourceLineNo">396</span>   * @return number of deleted files<a name="line.396"></a>
+<span class="sourceLineNo">397</span>   */<a name="line.397"></a>
+<span class="sourceLineNo">398</span>  protected int deleteFiles(Iterable&lt;FileStatus&gt; filesToDelete) {<a name="line.398"></a>
+<span class="sourceLineNo">399</span>    int deletedFileCount = 0;<a name="line.399"></a>
+<span class="sourceLineNo">400</span>    for (FileStatus file : filesToDelete) {<a name="line.400"></a>
+<span class="sourceLineNo">401</span>      Path filePath = file.getPath();<a name="line.401"></a>
+<span class="sourceLineNo">402</span>      LOG.trace("Removing {} from archive", filePath);<a name="line.402"></a>
+<span class="sourceLineNo">403</span>      try {<a name="line.403"></a>
+<span class="sourceLineNo">404</span>        boolean success = this.fs.delete(filePath, false);<a name="line.404"></a>
+<span class="sourceLineNo">405</span>        if (success) {<a name="line.405"></a>
+<span class="sourceLineNo">406</span>          deletedFileCount++;<a name="line.406"></a>
+<span class="sourceLineNo">407</span>        } else {<a name="line.407"></a>
+<span class="sourceLineNo">408</span>          LOG.warn("Attempted to delete:" + filePath<a name="line.408"></a>
+<span class="sourceLineNo">409</span>              + ", but couldn't. Run cleaner chain and attempt to delete on next pass.");<a name="line.409"></a>
+<span class="sourceLineNo">410</span>        }<a name="line.410"></a>
+<span class="sourceLineNo">411</span>      } catch (IOException e) {<a name="line.411"></a>
+<span class="sourceLineNo">412</span>        e = e instanceof RemoteException ?<a name="line.412"></a>
+<span class="sourceLineNo">413</span>                  ((RemoteException)e).unwrapRemoteException() : e;<a name="line.413"></a>
+<span class="sourceLineNo">414</span>        LOG.warn("Error while deleting: " + filePath, e);<a name="line.414"></a>
+<span class="sourceLineNo">415</span>      }<a name="line.415"></a>
+<span class="sourceLineNo">416</span>    }<a name="line.416"></a>
+<span class="sourceLineNo">417</span>    return deletedFileCount;<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>  @Override<a name="line.420"></a>
+<span class="sourceLineNo">421</span>  public synchronized void cleanup() {<a name="line.421"></a>
+<span class="sourceLineNo">422</span>    for (T lc : this.cleanersChain) {<a name="line.422"></a>
+<span class="sourceLineNo">423</span>      try {<a name="line.423"></a>
+<span class="sourceLineNo">424</span>        lc.stop("Exiting");<a name="line.424"></a>
+<span class="sourceLineNo">425</span>      } catch (Throwable t) {<a name="line.425"></a>
+<span class="sourceLineNo">426</span>        LOG.warn("Stopping", t);<a name="line.426"></a>
+<span class="sourceLineNo">427</span>      }<a name="line.427"></a>
+<span class="sourceLineNo">428</span>    }<a name="line.428"></a>
+<span class="sourceLineNo">429</span>  }<a name="line.429"></a>
+<span class="sourceLineNo">430</span><a name="line.430"></a>
+<span class="sourceLineNo">431</span>  @VisibleForTesting<a name="line.431"></a>
+<span class="sourceLineNo">432</span>  int getChorePoolSize() {<a name="line.432"></a>
+<span class="sourceLineNo">433</span>    return POOL.size;<a name="line.433"></a>
+<span class="sourceLineNo">434</span>  }<a name="line.434"></a>
+<span class="sourceLineNo">435</span><a name="line.435"></a>
+<span class="sourceLineNo">436</span>  /**<a name="line.436"></a>
+<span class="sourceLineNo">437</span>   * @param enabled<a name="line.437"></a>
+<span class="sourceLineNo">438</span>   */<a name="line.438"></a>
+<span class="sourceLineNo">439</span>  public boolean setEnabled(final boolean enabled) {<a name="line.439"></a>
+<span class="sourceLineNo">440</span>    return this.enabled.getAndSet(enabled);<a name="line.440"></a>
+<span class="sourceLineNo">441</span>  }<a name="line.441"></a>
+<span class="sourceLineNo">442</span><a name="line.442"></a>
+<span class="sourceLineNo">443</span>  public boolean getEnabled() { return this.enabled.get();<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>  private interface Action&lt;T&gt; {<a name="line.446"></a>
+<span class="sourceLineNo">447</span>    T act() throws IOException;<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>  /**<a name="line.450"></a>
+<span class="sourceLineNo">451</span>   * Attemps to clean up a directory, its subdirectories, and files.<a name="line.451"></a>
+<span class="sourceLineNo">452</span>   * Return value is true if everything was deleted. false on partial / total failures.<a name="line.452"></a>
+<span class="sourceLineNo">453</span>   */<a name="line.453"></a>
+<span class="sourceLineNo">454</span>  private class CleanerTask extends RecursiveTask&lt;Boolean&gt; {<a name="line.454"></a>
+<span class="sourceLineNo">455</span>    private final Path dir;<a name="line.455"></a>
+<span class="sourceLineNo">456</span>    private final boolean root;<a name="line.456"></a>
+<span class="sourceLineNo">457</span><a name="line.457"></a>
+<span class="sourceLineNo">458</span>    CleanerTask(final FileStatus dir, final boolean root) {<a name="line.458"></a>
+<span class="sourceLineNo">459</span>      this(dir.getPath(), root);<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>    CleanerTask(final Path dir, final boolean root) {<a name="line.462"></a>
+<span class="sourceLineNo">463</span>      this.dir = dir;<a name="line.463"></a>
+<span class="sourceLineNo">464</span>      this.root = root;<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>    @Override<a name="line.467"></a>
+<span class="sourceLineNo">468</span>    protected Boolean compute() {<a name="line.468"></a>
+<span class="sourceLineNo">469</span>      LOG.trace("Cleaning under {}", dir);<a name="line.469"></a>
+<span class="sourceLineNo">470</span>      List&lt;FileStatus&gt; subDirs;<a name="line.470"></a>
+<span class="sourceLineNo">471</span>      List&lt;FileStatus&gt; files;<a name="line.471"></a>
+<span class="sourceLineNo">472</span>      try {<a name="line.472"></a>
+<span class="sourceLineNo">473</span>        // if dir doesn't exist, we'll get null back for both of these<a name="line.473"></a>
+<span class="sourceLineNo">474</span>        // which will fall through to succeeding.<a name="line.474"></a>
+<span class="sourceLineNo">475</span>        subDirs = getFilteredStatus(status -&gt; status.isDirectory());<a name="line.475"></a>
+<span class="sourceLineNo">476</span>        files = getFilteredStatus(status -&gt; status.isFile());<a name="line.476"></a>
+<span class="sourceLineNo">477</span>      } catch (IOException ioe) {<a name="line.477"></a>
+<span class="sourceLineNo">478</span>        LOG.warn("failed to get FileStatus for contents of '{}'", dir, ioe);<a name="line.478"></a>
+<span class="sourceLineNo">479</span>        return false;<a name="line.479"></a>
+<span class="sourceLineNo">480</span>      }<a name="line.480"></a>
+<span class="sourceLineNo">481</span><a name="line.481"></a>
+<span class="sourceLineNo">482</span>      boolean nullSubDirs = subDirs == null;<a name="line.482"></a>
+<span class="sourceLineNo">483</span>      if (nullSubDirs) {<a name="line.483"></a>
+<span class="sourceLineNo">484</span>        LOG.trace("There is no subdir under {}", dir);<a name="line.484"></a>
+<span class="sourceLineNo">485</span>      }<a name="line.485"></a>
+<span class="sourceLineNo">486</span>      if (files == null) {<a name="line.486"></a>
+<span class="sourceLineNo">487</span>        LOG.trace("There is no file under {}", dir);<a name="line.487"></a>
+<span class="sourceLineNo">488</span>      }<a name="line.488"></a>
+<span class="sourceLineNo">489</span><a name="line.489"></a>
+<span class="sourceLineNo">490</span>      int capacity = nullSubDirs ? 0 : subDirs.size();<a name="line.490"></a>
+<span class="sourceLineNo">491</span>      List&lt;CleanerTask&gt; tasks = Lists.newArrayListWithCapacity(capacity);<a name="line.491"></a>
+<span class="sourceLineNo">492</span>      if (!nullSubDirs) {<a name="line.492"></a>
+<span class="sourceLineNo">493</span>        sortByConsumedSpace(subDirs);<a name="line.493"></a>
+<span class="sourceLineNo">494</span>        for (FileStatus subdir : subDirs) {<a name="line.494"></a>
+<span class="sourceLineNo">495</span>          CleanerTask task = new CleanerTask(subdir, false);<a name="line.495"></a>
+<span class="sourceLineNo">496</span>          tasks.add(task);<a name="line.496"></a>
+<span class="sourceLineNo">497</span>          task.fork();<a name="line.497"></a>
+<span class="sourceLineNo">498</span>        }<a name="line.498"></a>
+<span class="sourceLineNo">499</span>      }<a name="line.499"></a>
+<span class="sourceLineNo">500</span><a name="line.500"></a>
+<span class="sourceLineNo">501</span>      boolean result = true;<a name="line.501"></a>
+<span class="sourceLineNo">502</span>      result &amp;= deleteAction(() -&gt; checkAndDeleteFiles(files), "files");<a name="line.502"></a>
+<span class="sourceLineNo">503</span>      result &amp;= deleteAction(() -&gt; getCleanResult(tasks), "subdirs");<a name="line.503"></a>
+<span class="sourceLineNo">504</span>      // if and only if files and subdirs under current dir are deleted successfully, and<a name="line.504"></a>
+<span class="sourceLineNo">505</span>      // it is not the root dir, then task will try to delete it.<a name="line.505"></a>
+<span class="sourceLineNo">506</span>      if (result &amp;&amp; !root) {<a name="line.506"></a>
+<span class="sourceLineNo">507</span>        result &amp;= deleteAction(() -&gt; fs.delete(dir, false), "dir");<a name="line.507"></a>
+<span class="sourceLineNo">508</span>      }<a name="line.508"></a>
+<span class="sourceLineNo">509</span>      return result;<a name="line.509"></a>
+<span class="sourceLineNo">510</span>    }<a name="line.510"></a>
+<span class="sourceLineNo">511</span><a name="line.511"></a>
+<span class="sourceLineNo">512</span>    /**<a name="line.512"></a>
+<span class="sourceLineNo">513</span>     * Get FileStatus with filter.<a name="line.513"></a>
+<span class="sourceLineNo">514</span>     * Pay attention that FSUtils #listStatusWithStatusFilter would return null,<a name="line.514"></a>
+<span class="sourceLineNo">515</span>     * even though status is empty but not null.<a name="line.515"></a>
+<span class="sourceLineNo">516</span>     * @param function a filter function<a name="line.516"></a>
+<span class="sourceLineNo">517</span>     * @return filtered FileStatus or null if dir doesn't exist<a name="line.517"></a>
+<span class="sourceLineNo">518</span>     * @throws IOException if there's an error other than dir not existing<a name="line.518"></a>
+<span class="sourceLineNo">519</span>     */<a name="line.519"></a>
+<span class="sourceLineNo">520</span>    private List&lt;FileStatus&gt; getFilteredStatus(Predicate&lt;FileStatus&gt; function) throws IOException {<a name="line.520"></a>
+<span class="sourceLineNo">521</span>      return FSUtils.listStatusWithStatusFilter(fs, dir, status -&gt; function.test(status));<a name="line.521"></a>
+<span class="sourceLineNo">522</span>    }<a name="line.522"></a>
+<span class="sourceLineNo">523</span><a name="line.523"></a>
+<span class="sourceLineNo">524</span>    /**<a name="line.524"></a>
+<span class="sourceLineNo">525</span>     * Perform a delete on a specified type.<a name="line.525"></a>
+<span class="sourceLineNo">526</span>     * @param deletion a delete<a name="line.526"></a>
+<span class="sourceLineNo">527</span>     * @param type possible values are 'files', 'subdirs', 'dirs'<a name="line.527"></a>
+<span class="sourceLineNo">528</span>     * @return true if it deleted successfully, false otherwise<a name="line.528"></a>
+<span class="sourceLineNo">529</span>     */<a name="line.529"></a>
+<span class="sourceLineNo">530</span>    private boolean deleteAction(Action&lt;Boolean&gt; deletion, String type) {<a name="line.530"></a>
+<span class="sourceLineNo">531</span>      boolean deleted;<a name="line.531"></a>
+<span class="sourceLineNo">532</span>      try {<a name="line.532"></a>
+<span class="sourceLineNo">533</span>        LOG.trace("Start deleting {} under {}", type, dir);<a name="line.533"></a>
+<span class="sourceLineNo">534</span>        deleted = deletion.act();<a name="line.534"></a>
+<span class="sourceLineNo">535</span>      } catch (PathIsNotEmptyDirectoryException exception) {<a name="line.535"></a>
+<span class="sourceLineNo">536</span>        // N.B. HDFS throws this exception when we try to delete a non-empty directory, but<a name="line.536"></a>
+<span class="sourceLineNo">537</span>        // LocalFileSystem throws a bare IOException. So some test code will get the verbose<a name="line.537"></a>
+<span class="sourceLineNo">538</span>        // message below.<a name="line.538"></a>
+<span class="sourceLineNo">539</span>        LOG.debug("Couldn't delete '{}' yet because it isn't empty. Probably transient. " +<a name="line.539"></a>
+<span class="sourceLineNo">540</span>            "exception details at TRACE.", dir);<a name="line.540"></a>
+<span class="sourceLineNo">541</span>        LOG.trace("Couldn't delete '{}' yet because it isn't empty w/exception.", dir, exception);<a name="line.541"></a>
+<span class="sourceLineNo">542</span>        deleted = false;<a name="line.542"></a>
+<span class="sourceLineNo">543</span>      } catch (IOException ioe) {<a name="line.543"></a>
+<span class="sourceLineNo">544</span>        LOG.info("Could not delete {} under {}. might be transient; we'll retry. if it keeps " +<a name="line.544"></a>
+<span class="sourceLineNo">545</span>                  "happening, use following exception when asking on mailing list.",<a name="line.545"></a>
+<span class="sourceLineNo">546</span>                  type, dir, ioe);<a name="line.546"></a>
+<span class="sourceLineNo">547</span>        deleted = false;<a name="line.547"></a>
+<span class="sourceLineNo">548</span>      }<a name="line.548"></a>
+<span class="sourceLineNo">549</span>      LOG.trace("Finish deleting {} under {}, deleted=", type, dir, deleted);<a name="line.549"></a>
+<span class="sourceLineNo">550</span>      return deleted;<a name="line.550"></a>
+<span class="sourceLineNo">551</span>    }<a name="line.551"></a>
+<span class="sourceLineNo">552</span><a name="line.552"></a>
+<span class="sourceLineNo">553</span>    /**<a name="line.553"></a>
+<span class="sourceLineNo">554</span>     * Get cleaner results of subdirs.<a name="line.554"></a>
+<span class="sourceLineNo">555</span>     * @param tasks subdirs cleaner tasks<a name="line.555"></a>
+<span class="sourceLineNo">556</span>     * @return true if all subdirs deleted successfully, false for patial/all failures<a name="line.556"></a>
+<span class="sourceLineNo">557</span>     * @throws IOException something happen during computation<a name="line.557"></a>
+<span class="sourceLineNo">558</span>     */<a name="line.558"></a>
+<span class="sourceLineNo">559</span>    private boolean getCleanResult(List&lt;CleanerTask&gt; tasks) throws IOException {<a name="line.559"></a>
+<span class="sourceLineNo">560</span>      boolean cleaned = true;<a name="line.560"></a>
+<span class="sourceLineNo">561</span>      try {<a name="line.561"></a>
+<span class="sourceLineNo">562</span>        for (CleanerTask task : tasks) {<a name="line.562"></a>
+<span class="sourceLineNo">563</span>          cleaned &amp;= task.get();<a name="line.563"></a>
+<span class="sourceLineNo">564</span>        }<a name="line.564"></a>
+<span class="sourceLineNo">565</span>      } catch (InterruptedException | ExecutionException e) {<a name="line.565"></a>
+<span class="sourceLineNo">566</span>        throw new IOException(e);<a name="line.566"></a>
+<span class="sourceLineNo">567</span>      }<a name="line.567"></a>
+<span class="sourceLineNo">568</span>      return cleaned;<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>
 
 
 


[21/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 546d2b6..3b8b827 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.html
@@ -180,3553 +180,3580 @@
 <span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
 <span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * run the cluster.  All others park themselves in their constructor until<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> *<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
-<span class="sourceLineNo">237</span> */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
-<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * true, do nothing otherwise.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    private final HMaster master;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private final long timeout;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final boolean haltOnTimeout;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    InitializationMonitor(HMaster master) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      super("MasterInitializationMonitor");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.master = master;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.setDaemon(true);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public void run() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          Thread.sleep(timeout);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          if (master.isInitialized()) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            if (haltOnTimeout) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              System.exit(-1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException ie) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  //instance into web context.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public static final String MASTER = "master";<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Manager and zk listener for master election<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Region server tracker<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private RegionServerTracker regionServerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Draining region server tracker<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // Tracker for load balancer state<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Tracker for split and merge state<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for region normalizer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  //Tracker for master maintenance mode setting<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // Metrics for the HMaster<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  final MetricsMaster metricsMaster;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  // file system manager for the master FS operations<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private MasterFileSystem fileSystemManager;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private MasterWalManager walManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // server manager to deal with region server info<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private volatile ServerManager serverManager;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // manager of assignment nodes in zookeeper<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AssignmentManager assignmentManager;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // manager of replication<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // buffer for "fatal error" notices from region servers<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // in the cluster. This is only used for assisting<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // operations/debugging.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  // flag set after we become the active master (used for testing)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private volatile boolean activeMaster = false;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // flag set after we complete initialization once active<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // flag set after master services are started,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // initialization may have not completed yet.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  volatile boolean serviceStarted = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // Maximum time we should run balancer for<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final int maxBlancingTime;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // Maximum percent of regions in transition when balancing<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private final double maxRitPercent;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private final LockManager lockManager = new LockManager(this);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private LoadBalancer balancer;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private RegionNormalizer normalizer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private BalancerChore balancerChore;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private RegionNormalizerChore normalizerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ClusterStatusChore clusterStatusChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  CatalogJanitor catalogJanitorChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private LogCleaner logCleaner;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private HFileCleaner hfileCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private MobCompactionChore mobCompactChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  // used to synchronize the mobCompactionStates<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  // save the information of mob compactions in tables.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  MasterCoprocessorHost cpHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private final boolean preLoadTableDescriptors;<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  // Time stamps for when a hmaster became active<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private long masterActiveTime;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private long masterFinishedInitializationTime;<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  private final boolean masterCheckCompression;<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  //should we check encryption settings at master side, default true<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean masterCheckEncryption;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  // monitor for snapshot of hbase tables<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  SnapshotManager snapshotManager;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // monitor for distributed procedures<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private MasterProcedureManagerHost mpmHost;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private volatile MasterQuotaManager quotaManager;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private QuotaObserverChore quotaObserverChore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private WALProcedureStore procedureStore;<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // handle table states<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private TableStateManager tableStateManager;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private long splitPlanCount;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private long mergePlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /* Handle favored nodes information */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private FavoredNodesManager favoredNodesManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private Server masterJettyServer;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static class RedirectServlet extends HttpServlet {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    private final int regionServerInfoPort;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.434"></a>
-<span class="sourceLineNo">435</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>     */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       regionServerInfoPort = infoServer.getPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       regionServerHostname = hostname;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public void doGet(HttpServletRequest request,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectHost = regionServerHostname;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if(redirectHost == null) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        redirectHost = request.getServerName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "to an appropriate hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String redirectUrl = request.getScheme() + "://"<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        + request.getRequestURI();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      response.sendRedirect(redirectUrl);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<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>   * Initializes the HMaster. The steps are as follows:<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;ol&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * &lt;/ol&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Remaining steps of initialization occur in<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * the master becomes the active one.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public HMaster(final Configuration conf)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      throws IOException, KeeperException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    super(conf);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    TraceUtil.initTracer(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Disable usage of meta replicas in the master<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      decorateMasterConfiguration(this.conf);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // should we check encryption settings at master side, default true<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // preload table descriptor at startup<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>      // Do we publish the status?<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              ClusterStatusPublisher.Publisher.class);<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (shouldPublish) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        if (publisherClass == null) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.530"></a>
-<span class="sourceLineNo">531</span>              " is not set - not publishing status");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        } else {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } else {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        this.activeMasterManager = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    } catch (Throwable t) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      // cause of failed startup is lost.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      LOG.error("Failed construction of Master", t);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      throw t;<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><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  // block in here until then.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void run() {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        Threads.setDaemonThreadRunning(new Thread(() -&gt; {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>            int infoPort = putUpJettyServer();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            startActiveMasterManager(infoPort);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          } catch (Throwable t) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            // Make sure we log the exception.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>            String error = "Failed to become Active Master";<a name="line.569"></a>
-<span class="sourceLineNo">570</span>            LOG.error(error, t);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>            // Abort should have been called already.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            if (!isAborted()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>              abort(error, t);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>            }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        }));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // the super run call will do this for us.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      super.run();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      if (this.clusterSchemaService != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // If on way out, then we are no longer active master.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        this.clusterSchemaService.stopAsync();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        try {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          this.clusterSchemaService.awaitTerminated(<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        } catch (TimeoutException te) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<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>  // return the actual infoPort, -1 means disable info server.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  private int putUpJettyServer() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<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>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    // -1 is for disabling info server, so no redirecting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if(infoPort == infoServer.getPort()) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return infoPort;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String msg =<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.614"></a>
-<span class="sourceLineNo">615</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              + "hbase.master.info.bindAddress";<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      LOG.error(msg);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      throw new IOException(msg);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // a second entire stack here.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    masterJettyServer = new Server();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    connector.setHost(addr);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    connector.setPort(infoPort);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    masterJettyServer.addConnector(connector);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    final String redirectHostname =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        StringUtils.isBlank(useThisHostnameInstead) ? null : useThisHostnameInstead;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>    final RedirectServlet redirect = new RedirectServlet(infoServer, redirectHostname);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    final WebAppContext context = new WebAppContext(null, "/", null, null, null, null, WebAppContext.NO_SESSIONS);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    context.addServlet(new ServletHolder(redirect), "/*");<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    context.setServer(masterJettyServer);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      masterJettyServer.start();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    } catch (Exception e) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throw new IOException("Failed to start redirecting jetty server", e);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    return connector.getLocalPort();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  }<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  @Override<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return builder -&gt; builder.setRegionReplication(conf.getInt(HConstants.META_REPLICAS_NUM, HConstants.DEFAULT_META_REPLICA_NUM));<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>   * For compatibility, if failed with regionserver credentials, try the master one<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  @Override<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    try {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      super.login(user, host);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } catch (IOException ie) {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      user.login("hbase.master.keytab.file",<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        "hbase.master.kerberos.principal", host);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>  /**<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * If configured to put regions on active master,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * wait till a backup master becomes active.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   * Otherwise, loop till the server is stopped or aborted.<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  @Override<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  protected void waitForMasterActive(){<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(conf);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    while (!(tablesOnMaster &amp;&amp; activeMaster) &amp;&amp; !isStopped() &amp;&amp; !isAborted()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      sleeper.sleep();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    }<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>  @VisibleForTesting<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public MasterRpcServices getMasterRpcServices() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    return (MasterRpcServices)rpcServices;<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>  public boolean balanceSwitch(final boolean b) throws IOException {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return getMasterRpcServices().switchBalancer(b, BalanceSwitchMode.ASYNC);<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>  @Override<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  protected String getProcessName() {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return MASTER;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
-<span class="sourceLineNo">692</span>  protected boolean canCreateBaseZNode() {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return true;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Override<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  protected boolean canUpdateTableDescriptor() {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    return true;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>  @Override<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return new MasterRpcServices(this);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  protected void configureInfoServer() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    infoServer.addServlet("master-status", "/master-status", MasterStatusServlet.class);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    infoServer.setAttribute(MASTER, this);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (LoadBalancer.isTablesOnMaster(conf)) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      super.configureInfoServer();<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><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return MasterDumpServlet.class;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public MetricsMaster getMasterMetrics() {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    return metricsMaster;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  /**<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * Initialize all ZK based system trackers. But do not include {@link RegionServerTracker}, it<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * should have already been initialized along with {@link ServerManager}.<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * &lt;/p&gt;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * &lt;p&gt;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * Will be overridden in tests.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * &lt;/p&gt;<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @VisibleForTesting<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  protected void initializeZKBasedSystemTrackers()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      throws IOException, InterruptedException, KeeperException, ReplicationException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    this.normalizer = RegionNormalizerFactory.getRegionNormalizer(conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    this.normalizer.setMasterServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    this.normalizer.setMasterRpcServices((MasterRpcServices)rpcServices);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    this.loadBalancerTracker = new LoadBalancerTracker(zooKeeper, this);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    this.loadBalancerTracker.start();<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>    this.regionNormalizerTracker = new RegionNormalizerTracker(zooKeeper, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    this.regionNormalizerTracker.start();<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    this.splitOrMergeTracker = new SplitOrMergeTracker(zooKeeper, conf, this);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    this.splitOrMergeTracker.start();<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>    this.replicationPeerManager = ReplicationPeerManager.create(zooKeeper, conf);<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this, this.serverManager);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    this.drainingServerTracker.start();<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    this.maintenanceModeTracker = new MasterMaintenanceModeTracker(zooKeeper);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    this.maintenanceModeTracker.start();<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String clientQuorumServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    boolean clientZkObserverMode = conf.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    if (clientQuorumServers != null &amp;&amp; !clientZkObserverMode) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      // we need to take care of the ZK information synchronization<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      // if given client ZK are not observer nodes<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      ZKWatcher clientZkWatcher = new ZKWatcher(conf,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>          getProcessName() + ":" + rpcServices.getSocketAddress().getPort() + "-clientZK", this,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          false, true);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.metaLocationSyncer = new MetaLocationSyncer(zooKeeper, clientZkWatcher, this);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      this.metaLocationSyncer.start();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      this.masterAddressSyncer = new MasterAddressSyncer(zooKeeper, clientZkWatcher, this);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      this.masterAddressSyncer.start();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      // set cluster id is a one-go effort<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      ZKClusterId.setClusterId(clientZkWatcher, fileSystemManager.getClusterId());<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // Set the cluster as up.  If new RSs, they'll be waiting on this before<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    // going ahead with their startup.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    boolean wasUp = this.clusterStatusTracker.isClusterUp();<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    if (!wasUp) this.clusterStatusTracker.setClusterUp();<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    LOG.info("Active/primary master=" + this.serverName +<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        ", sessionid=0x" +<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +<a name="line.782"></a>
-<span class="sourceLineNo">783</span>        ", setting cluster-up flag (Was=" + wasUp + ")");<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>    // create/initialize the snapshot manager and other procedure managers<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    this.snapshotManager = new SnapshotManager();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    this.mpmHost = new MasterProcedureManagerHost();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    this.mpmHost.register(this.snapshotManager);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    this.mpmHost.register(new MasterFlushTableProcedureManager());<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    this.mpmHost.loadProcedures(conf);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    this.mpmHost.initialize(this, this.metricsMaster);<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * Finish initialization of HMaster after becoming the primary master.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * &lt;p/&gt;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * The startup order is a bit complicated but very important, do not change it unless you know<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * what you are doing.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;ol&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;Initialize file system based components - file system manager, wal manager, table<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * descriptors, etc&lt;/li&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * &lt;li&gt;Publish cluster id&lt;/li&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * &lt;li&gt;Here comes the most complicated part - initialize server manager, assignment manager and<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * region server tracker<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * &lt;ol type='i'&gt;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * &lt;li&gt;Create server manager&lt;/li&gt;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * &lt;li&gt;Create procedure executor, load the procedures, but do not start workers. We will start it<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * later after we finish scheduling SCPs to avoid scheduling duplicated SCPs for the same<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * server&lt;/li&gt;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * &lt;li&gt;Create assignment manager and start it, load the meta region state, but do not load data<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * from meta region&lt;/li&gt;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * &lt;li&gt;Start region server tracker, construct the online servers set and find out dead servers and<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * schedule SCP for them. The online servers will be constructed by scanning zk, and we will also<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * scan the wal directory to find out possible live region servers, and the differences between<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * these two sets are the dead servers&lt;/li&gt;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * &lt;/ol&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * &lt;/li&gt;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * &lt;li&gt;If this is a new deploy, schedule a InitMetaProcedure to initialize meta&lt;/li&gt;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * &lt;li&gt;Start necessary service threads - balancer, catalog janior, executor services, and also the<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * procedure executor, etc. Notice that the balancer must be created first as assignment manager<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * may use it when assigning regions.&lt;/li&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * &lt;li&gt;Wait for meta to be initialized if necesssary, start table state manager.&lt;/li&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * &lt;li&gt;Wait for enough region servers to check-in&lt;/li&gt;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * &lt;li&gt;Let assignment manager load data from meta and construct region states&lt;/li&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * &lt;li&gt;Start all other things such as chore services, etc&lt;/li&gt;<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * &lt;/ol&gt;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * &lt;p/&gt;<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * Notice that now we will not schedule a special procedure to make meta online(unless the first<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * time where meta has not been created yet), we will rely on SCP to bring meta online.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  private void finishActiveMasterInitialization(MonitoredTask status) throws IOException,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          InterruptedException, KeeperException, ReplicationException {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Thread zombieDetector = new Thread(new InitializationMonitor(this),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        "ActiveMasterInitializationMonitor-" + System.currentTimeMillis());<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    zombieDetector.setDaemon(true);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    zombieDetector.start();<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>     * We are active master now... go initialize components we need to run.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    status.setStatus("Initializing Master file system");<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.masterActiveTime = System.currentTimeMillis();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    // Initialize the chunkCreator<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    initializeMemStoreChunkCreator();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    this.walManager = new MasterWalManager(this);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>    // enable table descriptors cache<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    this.tableDescriptors.setCacheOn();<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // warm-up HTDs cache on master initialization<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (preLoadTableDescriptors) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      status.setStatus("Pre-loading table descriptors");<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.tableDescriptors.getAll();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Publish cluster ID; set it in Master too. The superclass RegionServer does this later but<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // only after it has checked in with the Master. At least a few tests ask Master for clusterId<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    // before it has called its run method and before RegionServer has done the reportForDuty.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    ClusterId clusterId = fileSystemManager.getClusterId();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    status.setStatus("Publishing Cluster ID " + clusterId + " in ZooKeeper");<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    this.clusterId = clusterId.toString();<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.zookeeper.KeeperException;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.Server;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.Logger;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.slf4j.LoggerFactory;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * run the cluster.  All others park themselves in their constructor until<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> *<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> *<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.235"></a>
+<span class="sourceLineNo">236</span> *<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @see org.apache.zookeeper.Watcher<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>@SuppressWarnings("deprecation")<a name="line.240"></a>
+<span class="sourceLineNo">241</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private static class InitializationMonitor extends HasThread {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.254"></a>
+<span class="sourceLineNo">255</span>     * true, do nothing otherwise.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public static final boolean HALT_DEFAULT = false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private final HMaster master;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private final long timeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private final boolean haltOnTimeout;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    InitializationMonitor(HMaster master) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      super("MasterInitializationMonitor");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.master = master;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.setDaemon(true);<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>    public void run() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Thread.sleep(timeout);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (master.isInitialized()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.281"></a>
+<span class="sourceLineNo">282</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            if (haltOnTimeout) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  //instance into web context.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String MASTER = "master";<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  // Manager and zk listener for master election<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private final ActiveMasterManager activeMasterManager;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  // Region server tracker<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private RegionServerTracker regionServerTracker;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Draining region server tracker<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private DrainingServerTracker drainingServerTracker;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // Tracker for load balancer state<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // Tracker for split and merge state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Tracker for region normalizer state<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  //Tracker for master maintenance mode setting<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private ClusterSchemaService clusterSchemaService;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    "hbase.master.wait.on.service.seconds";<a name="line.325"></a>
+<span class="sourceLineNo">326</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.326"><

<TRUNCATED>

[08/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
index 9b50b5b..3e7abb8 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10};
+var methods = {"i0":9,"i1":10,"i2":10,"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";
@@ -206,20 +206,31 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#readStoreFile-org.apache.hadoop.fs.Path-">readStoreFile</a></span>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</code>&nbsp;</td>
 </tr>
 <tr id="i2" class="altColor">
+<td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#readStoreFileLikeScanner-org.apache.hadoop.fs.Path-">readStoreFileLikeScanner</a></span>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)</code>
+<div class="block">Read a storefile in the same manner as a scanner -- using non-positional reads and
+ without waiting for prefetch to complete.</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/io/hfile/TestPrefetch.html#setUp--">setUp</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i3" class="rowColor">
+<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/io/hfile/TestPrefetch.html#testPrefetch--">testPrefetch</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i4" class="altColor">
+<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/io/hfile/TestPrefetch.html#testPrefetchRace--">testPrefetchRace</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/io/hfile/TestPrefetch.html#testPrefetchSetInHCDWorks--">testPrefetchSetInHCDWorks</a></span>()</code>&nbsp;</td>
 </tr>
-<tr id="i5" class="rowColor">
+<tr id="i7" 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/io/hfile/TestPrefetch.html#writeStoreFile--">writeStoreFile</a></span>()</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#writeStoreFile-java.lang.String-">writeStoreFile</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;fname)</code>&nbsp;</td>
 </tr>
 </table>
 <ul class="blockList">
@@ -394,13 +405,43 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
+<a name="testPrefetchRace--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testPrefetchRace</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.87">testPrefetchRace</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="readStoreFileLikeScanner-org.apache.hadoop.fs.Path-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>readStoreFileLikeScanner</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.98">readStoreFileLikeScanner</a>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)
+                               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">Read a storefile in the same manner as a scanner -- using non-positional reads and
+ without waiting for prefetch to complete.</div>
+<dl>
+<dt><span class="throwsLabel">Throws:</span></dt>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="readStoreFile-org.apache.hadoop.fs.Path-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>readStoreFile</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.86">readStoreFile</a>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.111">readStoreFile</a>(org.apache.hadoop.fs.Path&nbsp;storeFilePath)
                     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>
@@ -408,13 +449,13 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 </dl>
 </li>
 </ul>
-<a name="writeStoreFile--">
+<a name="writeStoreFile-java.lang.String-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>writeStoreFile</h4>
-<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.111">writeStoreFile</a>()
+<pre>private&nbsp;org.apache.hadoop.fs.Path&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.136">writeStoreFile</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;fname)
                                           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>
@@ -428,7 +469,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>generateKeyType</h4>
-<pre>public static&nbsp;org.apache.hadoop.hbase.KeyValue.Type&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.141">generateKeyType</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand)</pre>
+<pre>public static&nbsp;org.apache.hadoop.hbase.KeyValue.Type&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/io/hfile/TestPrefetch.html#line.166">generateKeyType</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Random.html?is-external=true" title="class or interface in java.util">Random</a>&nbsp;rand)</pre>
 </li>
 </ul>
 </li>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
index 8389e8b..854c6a4 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html
@@ -122,7 +122,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.141">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>
+<pre>public static enum <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.143">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Enum.html?is-external=true" title="class or interface in java.lang">Enum</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>&gt;</pre>
 </li>
 </ul>
@@ -207,7 +207,7 @@ the order they are declared.</div>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>VALIDATION_ERROR</h4>
-<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.142">VALIDATION_ERROR</a></pre>
+<pre>public static final&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.144">VALIDATION_ERROR</a></pre>
 </li>
 </ul>
 </li>
@@ -224,7 +224,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.141">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.143">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -244,7 +244,7 @@ for (TestTableSnapshotInputFormat.TestTableSnapshotCounters c : TestTableSnapsho
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.141">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html" title="enum in org.apache.hadoop.hbase.mapreduce">TestTableSnapshotInputFormat.TestTableSnapshotCounters</a>&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotCounters.html#line.143">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
index 4e092b1..5f83eea 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html
@@ -123,7 +123,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.145">TestTableSnapshotInputFormat.TestTableSnapshotMapper</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.147">TestTableSnapshotInputFormat.TestTableSnapshotMapper</a>
 extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.io.NullWritable&gt;</pre>
 </li>
 </ul>
@@ -216,7 +216,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestTableSnapshotMapper</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html#line.145">TestTableSnapshotMapper</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html#line.147">TestTableSnapshotMapper</a>()</pre>
 </li>
 </ul>
 </li>
@@ -233,7 +233,7 @@ extends org.apache.hadoop.hbase.mapreduce.TableMapper&lt;org.apache.hadoop.hbase
 <ul class="blockListLast">
 <li class="blockList">
 <h4>map</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html#line.148">map</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotMapper.html#line.150">map</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
                    org.apache.hadoop.hbase.client.Result&nbsp;value,
                    org.apache.hadoop.mapreduce.Mapper.Context&nbsp;context)
             throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
index 617ea0c..604259c 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.156">TestTableSnapshotInputFormat.TestTableSnapshotReducer</a>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.158">TestTableSnapshotInputFormat.TestTableSnapshotReducer</a>
 extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.ImmutableBytesWritable,org.apache.hadoop.io.NullWritable,org.apache.hadoop.io.NullWritable,org.apache.hadoop.io.NullWritable&gt;</pre>
 </li>
 </ul>
@@ -234,7 +234,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>rowTracker</h4>
-<pre><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.158">rowTracker</a></pre>
+<pre><a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.SeenRowTracker.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility.SeenRowTracker</a> <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.160">rowTracker</a></pre>
 </li>
 </ul>
 </li>
@@ -251,7 +251,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>TestTableSnapshotReducer</h4>
-<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.156">TestTableSnapshotReducer</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.158">TestTableSnapshotReducer</a>()</pre>
 </li>
 </ul>
 </li>
@@ -268,7 +268,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockList">
 <li class="blockList">
 <h4>reduce</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.161">reduce</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.163">reduce</a>(org.apache.hadoop.hbase.io.ImmutableBytesWritable&nbsp;key,
                       <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.io.NullWritable&gt;&nbsp;values,
                       org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
@@ -288,7 +288,7 @@ extends org.apache.hadoop.mapreduce.Reducer&lt;org.apache.hadoop.hbase.io.Immuta
 <ul class="blockListLast">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.167">cleanup</a>(org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.TestTableSnapshotReducer.html#line.169">cleanup</a>(org.apache.hadoop.mapreduce.Reducer.Context&nbsp;context)
                 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a>,
                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/InterruptedException.html?is-external=true" title="class or interface in java.lang">InterruptedException</a></pre>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
index 6caf220..a7458e5 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10};
+var methods = {"i0":9,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":10,"i10":10,"i11":10,"i12":10};
 var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
 var altColor = "altColor";
 var rowColor = "rowColor";
@@ -166,17 +166,25 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#bbb">bbb</a></span></code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#bbc">bbc</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"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#CLASS_RULE">CLASS_RULE</a></span></code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private static org.slf4j.Logger</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#LOG">LOG</a></span></code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>org.junit.rules.TestName</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#name">name</a></span></code>&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private static byte[]</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#yya">yya</a></span></code>&nbsp;</td>
+</tr>
 <tr class="altColor">
 <td class="colFirst"><code>private static byte[]</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#yyy">yyy</a></span></code>&nbsp;</td>
@@ -284,6 +292,14 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
                        boolean&nbsp;setLocalityEnabledTo)</code>&nbsp;</td>
 </tr>
 <tr id="i10" class="altColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#testWithMockedMapReduceWithNoStartRowStopRow--">testWithMockedMapReduceWithNoStartRowStopRow</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i11" class="rowColor">
+<td class="colFirst"><code>void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#testWithMockedMapReduceWithSplitsPerRegion--">testWithMockedMapReduceWithSplitsPerRegion</a></span>()</code>&nbsp;</td>
+</tr>
+<tr id="i12" class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#verifyWithMockedMapReduce-org.apache.hadoop.mapreduce.Job-int-int-byte:A-byte:A-">verifyWithMockedMapReduce</a></span>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                          int&nbsp;numRegions,
@@ -356,13 +372,31 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.78">yyy</a></pre>
 </li>
 </ul>
+<a name="bbc">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>bbc</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.79">bbc</a></pre>
+</li>
+</ul>
+<a name="yya">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>yya</h4>
+<pre>private static final&nbsp;byte[] <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.80">yya</a></pre>
+</li>
+</ul>
 <a name="name">
 <!--   -->
 </a>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>name</h4>
-<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.81">name</a></pre>
+<pre>public&nbsp;org.junit.rules.TestName <a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.83">name</a></pre>
 </li>
 </ul>
 </li>
@@ -396,7 +430,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>getStartRow</h4>
-<pre>protected&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.84">getStartRow</a>()</pre>
+<pre>protected&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.86">getStartRow</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html#getStartRow--">getStartRow</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatTestBase</a></code></dd>
@@ -409,7 +443,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>getEndRow</h4>
-<pre>protected&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.89">getEndRow</a>()</pre>
+<pre>protected&nbsp;byte[]&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.91">getEndRow</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html#getEndRow--">getEndRow</a></code>&nbsp;in class&nbsp;<code><a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormatTestBase.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormatTestBase</a></code></dd>
@@ -422,7 +456,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>tearDown</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.94">tearDown</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.96">tearDown</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>
@@ -436,7 +470,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>testGetBestLocations</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.98">testGetBestLocations</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.100">testGetBestLocations</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>
@@ -450,7 +484,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>testInitTableSnapshotMapperJobConfig</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.174">testInitTableSnapshotMapperJobConfig</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.176">testInitTableSnapshotMapperJobConfig</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>
@@ -464,7 +498,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>testRestoreSnapshotDoesNotCreateBackRefLinksInit</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.205">testRestoreSnapshotDoesNotCreateBackRefLinksInit</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.207">testRestoreSnapshotDoesNotCreateBackRefLinksInit</a>(org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                                              org.apache.hadoop.fs.Path&nbsp;tmpTableDir)
                                                       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>
@@ -482,7 +516,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithMockedMapReduce</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.214">testWithMockedMapReduce</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.216">testWithMockedMapReduce</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
                                     <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                     int&nbsp;numRegions,
                                     int&nbsp;numSplitsPerRegion,
@@ -497,13 +531,41 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 </dl>
 </li>
 </ul>
+<a name="testWithMockedMapReduceWithSplitsPerRegion--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testWithMockedMapReduceWithSplitsPerRegion</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.252">testWithMockedMapReduceWithSplitsPerRegion</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="testWithMockedMapReduceWithNoStartRowStopRow--">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>testWithMockedMapReduceWithNoStartRowStopRow</h4>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.279">testWithMockedMapReduceWithNoStartRowStopRow</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="testNoDuplicateResultsWhenSplitting--">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>testNoDuplicateResultsWhenSplitting</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.250">testNoDuplicateResultsWhenSplitting</a>()
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.308">testNoDuplicateResultsWhenSplitting</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>
@@ -517,7 +579,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>verifyWithMockedMapReduce</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.301">verifyWithMockedMapReduce</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.359">verifyWithMockedMapReduce</a>(org.apache.hadoop.mapreduce.Job&nbsp;job,
                                        int&nbsp;numRegions,
                                        int&nbsp;expectedNumSplits,
                                        byte[]&nbsp;startRow,
@@ -537,7 +599,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockList">
 <li class="blockList">
 <h4>testWithMapReduceImpl</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.348">testWithMapReduceImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.422">testWithMapReduceImpl</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
                                      org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                      <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                      org.apache.hadoop.fs.Path&nbsp;tableDir,
@@ -560,7 +622,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/mapreduce/TableSnapshotI
 <ul class="blockListLast">
 <li class="blockList">
 <h4>doTestWithMapReduce</h4>
-<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.356">doTestWithMapReduce</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
+<pre>public static&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/mapreduce/TestTableSnapshotInputFormat.html#line.430">doTestWithMapReduce</a>(<a href="../../../../../org/apache/hadoop/hbase/HBaseTestingUtility.html" title="class in org.apache.hadoop.hbase">HBaseTestingUtility</a>&nbsp;util,
                                        org.apache.hadoop.hbase.TableName&nbsp;tableName,
                                        <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;snapshotName,
                                        byte[]&nbsp;startRow,

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html
index d544bcb..5da4eac 100644
--- a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html
@@ -50,7 +50,7 @@ var activeTableTab = "activeTableTab";
 <div class="subNav">
 <ul class="navList">
 <li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetInfoPort.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" target="_top">Frames</a></li>
@@ -360,7 +360,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/master/TestGetInfoPort.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
-<li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
 </ul>
 <ul class="navList">
 <li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetLastFlushedSequenceId.html" target="_top">Frames</a></li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
----------------------------------------------------------------------
diff --git a/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
new file mode 100644
index 0000000..4e8493e
--- /dev/null
+++ b/testdevapidocs/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html
@@ -0,0 +1,410 @@
+<!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>TestGetReplicationLoad.MyMaster (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="TestGetReplicationLoad.MyMaster (Apache HBase 3.0.0-SNAPSHOT Test 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/TestGetReplicationLoad.MyMaster.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/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.MyMaster.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.HMaster">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.master.HMaster">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</div>
+<h2 title="Class TestGetReplicationLoad.MyMaster" class="title">Class TestGetReplicationLoad.MyMaster</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.util.HasThread</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.regionserver.HRegionServer</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.HMaster</li>
+<li>
+<ul class="inheritance">
+<li>org.apache.hadoop.hbase.master.TestGetReplicationLoad.MyMaster</li>
+</ul>
+</li>
+</ul>
+</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>, org.apache.hadoop.hbase.Abortable, org.apache.hadoop.hbase.conf.ConfigurationObserver, org.apache.hadoop.hbase.master.MasterServices, org.apache.hadoop.hbase.regionserver.FavoredNodesForRegion, org.apache.hadoop.hbase.regionserver.LastSequenceId, org.apache.hadoop.hbase.regionserver.MutableOnlineRegions, org.apache.hadoop.hbase.regionserver.OnlineRegions, org.apache.hadoop.hbase.regionserver.RegionServerServices, org.apache.hadoop.hbase.Server, org.apache.hadoop.hbase.Stoppable</dd>
+</dl>
+<dl>
+<dt>Enclosing class:</dt>
+<dd><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master">TestGetReplicationLoad</a></dd>
+</dl>
+<hr>
+<br>
+<pre>public static class <a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.html#line.54">TestGetReplicationLoad.MyMaster</a>
+extends org.apache.hadoop.hbase.master.HMaster</pre>
+</li>
+</ul>
+</div>
+<div class="summary">
+<ul class="blockList">
+<li class="blockList">
+<!-- ======== NESTED CLASS SUMMARY ======== -->
+<ul class="blockList">
+<li class="blockList"><a name="nested.class.summary">
+<!--   -->
+</a>
+<h3>Nested Class Summary</h3>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.master.HMaster">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
+<code>org.apache.hadoop.hbase.master.HMaster.MasterStoppedException, org.apache.hadoop.hbase.master.HMaster.RedirectServlet, org.apache.hadoop.hbase.master.HMaster.TableDescriptorGetter</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
+<code>org.apache.hadoop.hbase.regionserver.HRegionServer.MovedRegionsCleaner</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="nested.classes.inherited.from.class.org.apache.hadoop.hbase.regionserver.RegionServerServices">
+<!--   -->
+</a>
+<h3>Nested classes/interfaces inherited from interface&nbsp;org.apache.hadoop.hbase.regionserver.RegionServerServices</h3>
+<code>org.apache.hadoop.hbase.regionserver.RegionServerServices.PostOpenDeployContext, org.apache.hadoop.hbase.regionserver.RegionServerServices.RegionStateTransitionContext</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.master.HMaster">
+<!--   -->
+</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, masterAddressSyncer, metaLocationSyncer, metricsMaster, rsFatals, serviceStarted, snapshotManager</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="fields.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
+<!--   -->
+</a>
+<h3>Fields inherited from class&nbsp;org.apache.hadoop.hbase.regionserver.HRegionServer</h3>
+<code>cacheConfig, cacheFlusher, clusterConnection, clusterId, clusterStatusTracker, compactSplitThread, conf, configurationManager, csm, executorService, fs, fsOk, fsUtilizationChore, hMemManager, infoServer, leases, lock, MASTER_HOSTNAME_KEY, metaTableLocator, movedRegions, msgInterval, numRegionsToReport, onlineRegions, regionFavoredNodesMap, REGIONSERVER, regionsInTransitionInRS, replicationSinkHandler, replicationSourceHandler, rpcServices, secureBulkLoadManager, serverName, sleeper, startcode, tableDescriptors, TEST_SKIP_REPORTING_TRANSITION, threadWakeFrequency, useThisHostnameInstead, walFactory, walFs, walRoller, zooKeeper</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/TestGetReplicationLoad.MyMaster.html#MyMaster-org.apache.hadoop.conf.Configuration-">MyMaster</a></span>(org.apache.hadoop.conf.Configuration&nbsp;conf)</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>protected void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html#tryRegionServerReport-long-long-">tryRegionServerReport</a></span>(long&nbsp;reportStartTime,
+                     long&nbsp;reportEndTime)</code>&nbsp;</td>
+</tr>
+</table>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.HMaster">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.master.HMaster</h3>
+<code>abort, abortProcedure, addColumn, addReplicationPeer, balance, balance, balanceSwitch, canCreateBaseZNode, canUpdateTableDescriptor, checkIfShouldMoveSystemRegionAsync, checkInitialized, checkServiceStarted, checkTableModifiable, configureInfoServer, constructMaster, createMetaBootstrap, createNamespace, createRpcServices, createServerManager, createSystemTable, createTable, decommissionRegionServers, decorateMasterConfiguration, deleteColumn, deleteNamespace, deleteTable, disableReplicationPeer, disableTable, enableReplicationPeer, enableTable, getAssignmentManager, getAverageLoad, getCatalogJanitor, getClientIdAuditPrefix, getClusterMetrics, getClusterMetrics, getClusterMetricsWithoutCoprocessor, getClusterMetricsWithoutCoprocessor, getClusterSchema, getDumpServlet, getFavoredNodesManager, getHFileCleaner, getInitializedEvent, getLastMajorCompactionTimestamp, getLastMajorCompactionTimestampForRegion, getLoadBalancer, getLoadBalancerClassName, getLoadedCoprocessors, getLockMa
 nager, getLocks, getLogCleaner, getMasterActiveTime, getMasterCoprocessorHost, getMasterCoprocessors, getMasterFileSystem, getMasterFinishedInitializationTime, getMasterMetrics, getMasterProcedureExecutor, getMasterProcedureManagerHost, getMasterQuotaManager, getMasterRpcServices, getMasterStartTime, getMasterWalManager, getMergePlanCount, getMetaTableObserver, getMobCompactionState, getNamespace, getNamespaces, getNumWALFiles, getProcedures, getProcessName, getQuotaObserverChore, getRegionNormalizer, getRegionNormalizerTracker, getRegionServerFatalLogBuffer, getRegionServerInfoPort, getRegionServerVersion, getRemoteInetAddress, getReplicationLoad, getReplicationPeerConfig, getReplicationPeerManager, getServerManager, getServerName, getSnapshotManager, getSnapshotQuotaObserverChore, getSpaceQuotaSnapshotNotifier, getSplitOrMergeTracker, getSplitPlanCount, getTableDescriptors, getTableRegionForRow, getTableStateManager, getUseThisHostnameInstead, getWalProcedureStore, getZooKeeper, i
 nitClusterSchemaService, initializeZKBasedSystemTrackers, isActiveMaster, isBalancerOn, isCatalogJanitorEnabled, isCleanerChoreEnabled, isInitialized, isInMaintenanceMode, isNormalizerOn, isSplitOrMergeEnabled, listDecommissionedRegionServers, listReplicationPeers, listTableDescriptors, listTableDescriptorsByNamespace, listTableNames, listTableNamesByNamespace, login, main, mergeRegions, modifyColumn, modifyNamespace, modifyTable, move, normalizeRegions, recommissionRegionServer, registerService, remoteProcedureCompleted, remoteProcedureFailed, removeReplicationPeer, reportMobCompactionEnd, reportMobCompactionStart, requestMobCompaction, restoreSnapshot, run, setCatalogJanitorEnabled, setInitialized, shutdown, splitRegion, stop, stopMaster, stopServiceThreads, truncateTable, updateConfigurationForSpaceQuotaObserver, updateReplicationPeerConfig, waitForMasterActive</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">
+<!--   -->
+</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, 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">
+<!--   -->
+</a>
+<h3>Methods inherited from class&nbsp;org.apache.hadoop.hbase.util.HasThread</h3>
+<code>getName, getThread, interrupt, isAlive, isInterrupted, join, join, join, setDaemon, setName, setPriority, setUncaughtExceptionHandler, start</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#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>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.master.MasterServices">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.master.MasterServices</h3>
+<code>getExecutorService, isClusterUp</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Server">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Server</h3>
+<code>createConnection, getChoreService, getClusterConnection, getConfiguration, getConnection, getCoordinatedStateManager, getFileSystem, getMetaTableLocator, isStopping</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Abortable">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Abortable</h3>
+<code>isAborted</code></li>
+</ul>
+<ul class="blockList">
+<li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.Stoppable">
+<!--   -->
+</a>
+<h3>Methods inherited from interface&nbsp;org.apache.hadoop.hbase.Stoppable</h3>
+<code>isStopped</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="MyMaster-org.apache.hadoop.conf.Configuration-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>MyMaster</h4>
+<pre>public&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html#line.55">MyMaster</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,
+                <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/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+<dd><code>org.apache.zookeeper.KeeperException</code></dd>
+<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>
+</li>
+</ul>
+<!-- ============ METHOD DETAIL ========== -->
+<ul class="blockList">
+<li class="blockList"><a name="method.detail">
+<!--   -->
+</a>
+<h3>Method Detail</h3>
+<a name="tryRegionServerReport-long-long-">
+<!--   -->
+</a>
+<ul class="blockListLast">
+<li class="blockList">
+<h4>tryRegionServerReport</h4>
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html#line.60">tryRegionServerReport</a>(long&nbsp;reportStartTime,
+                                     long&nbsp;reportEndTime)</pre>
+<dl>
+<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
+<dd><code>tryRegionServerReport</code>&nbsp;in class&nbsp;<code>org.apache.hadoop.hbase.regionserver.HRegionServer</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/TestGetReplicationLoad.MyMaster.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/TestGetReplicationLoad.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
+<li><a href="../../../../../org/apache/hadoop/hbase/master/TestHMasterCommandLine.html" title="class in org.apache.hadoop.hbase.master"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
+</ul>
+<ul class="navList">
+<li><a href="../../../../../index.html?org/apache/hadoop/hbase/master/TestGetReplicationLoad.MyMaster.html" target="_top">Frames</a></li>
+<li><a href="TestGetReplicationLoad.MyMaster.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.HMaster">Nested</a>&nbsp;|&nbsp;</li>
+<li><a href="#fields.inherited.from.class.org.apache.hadoop.hbase.master.HMaster">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>


[37/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/checkstyle.rss
----------------------------------------------------------------------
diff --git a/checkstyle.rss b/checkstyle.rss
index 013055e..c29ddc5 100644
--- a/checkstyle.rss
+++ b/checkstyle.rss
@@ -25,8 +25,8 @@ under the License.
     <language>en-us</language>
     <copyright>&#169;2007 - 2018 The Apache Software Foundation</copyright>
     <item>
-      <title>File: 3643,
-             Errors: 15875,
+      <title>File: 3644,
+             Errors: 15874,
              Warnings: 0,
              Infos: 0
       </title>
@@ -21102,6 +21102,20 @@ under the License.
               </tr>
                           <tr>
                 <td>
+                  <a href="http://hbase.apache.org/checkstyle.html#org.apache.hadoop.hbase.master.TestGetReplicationLoad.java">org/apache/hadoop/hbase/master/TestGetReplicationLoad.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.client.ImmutableHTableDescriptor.java">org/apache/hadoop/hbase/client/ImmutableHTableDescriptor.java</a>
                 </td>
                 <td>
@@ -32591,7 +32605,7 @@ under the License.
                   0
                 </td>
                 <td>
-                  24
+                  23
                 </td>
               </tr>
                           <tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/coc.html
----------------------------------------------------------------------
diff --git a/coc.html b/coc.html
index 254c19f..e532cab 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <meta http-equiv="Content-Language" content="en" />
     <title>Apache HBase &#x2013; 
       Code of Conduct Policy
@@ -375,7 +375,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-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/dependencies.html
----------------------------------------------------------------------
diff --git a/dependencies.html b/dependencies.html
index deb8fd8..d8f4adb 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -440,7 +440,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/dependency-convergence.html
----------------------------------------------------------------------
diff --git a/dependency-convergence.html b/dependency-convergence.html
index 1e78a90..12656c6 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -905,7 +905,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/dependency-info.html
----------------------------------------------------------------------
diff --git a/dependency-info.html b/dependency-info.html
index ee00ca0..17c30db 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -313,7 +313,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/dependency-management.html
----------------------------------------------------------------------
diff --git a/dependency-management.html b/dependency-management.html
index eb0789b..61a8496 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="20180625" />
+    <meta name="Date-Revision-yyyymmdd" content="20180626" />
     <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" />
@@ -1011,7 +1011,7 @@
                         <a href="https://www.apache.org/">The Apache Software Foundation</a>.
             All rights reserved.      
                     
-                  <li id="publishDate" class="pull-right">Last Published: 2018-06-25</li>
+                  <li id="publishDate" class="pull-right">Last Published: 2018-06-26</li>
             </p>
                 </div>
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/constant-values.html
----------------------------------------------------------------------
diff --git a/devapidocs/constant-values.html b/devapidocs/constant-values.html
index 0c54ab4..9d81663 100644
--- a/devapidocs/constant-values.html
+++ b/devapidocs/constant-values.html
@@ -3768,21 +3768,21 @@
 <!--   -->
 </a><code>public&nbsp;static&nbsp;final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a></code></td>
 <td><code><a href="org/apache/hadoop/hbase/Version.html#date">date</a></code></td>
-<td class="colLast"><code>"Mon Jun 25 14:45:20 UTC 2018"</code></td>
+<td class="colLast"><code>"Tue Jun 26 15:33:09 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>"9640ebacd464049be5c04f5c2fb33a73603e8c34"</code></td>
+<td class="colLast"><code>"6a0c67344a86a98eaa56586524639fcf84ca1275"</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>"681d99ec6dc50e27fd39f4329d2b58de"</code></td>
+<td class="colLast"><code>"f666955a91aed9e585fcea26190b1410"</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/eab0a960/devapidocs/index-all.html
----------------------------------------------------------------------
diff --git a/devapidocs/index-all.html b/devapidocs/index-all.html
index b317346..bd65d80 100644
--- a/devapidocs/index-all.html
+++ b/devapidocs/index-all.html
@@ -37880,6 +37880,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html#getDelay-java.util.concurrent.TimeUnit-">getDelay(TimeUnit)</a></span> - Method in class org.apache.hadoop.hbase.zookeeper.<a href="org/apache/hadoop/hbase/zookeeper/ReadOnlyZKClient.Task.html" title="class in org.apache.hadoop.hbase.zookeeper">ReadOnlyZKClient.Task</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html#getDelegate--">getDelegate()</a></span> - Method in class org.apache.hadoop.hbase.mapreduce.<a href="org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html" title="class in org.apache.hadoop.hbase.mapreduce">TableSnapshotInputFormat.TableSnapshotRegionSplit</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/util/EnvironmentEdgeManager.html#getDelegate--">getDelegate()</a></span> - Static method in class org.apache.hadoop.hbase.util.<a href="org/apache/hadoop/hbase/util/EnvironmentEdgeManager.html" title="class in org.apache.hadoop.hbase.util">EnvironmentEdgeManager</a></dt>
 <dd>
 <div class="block">Retrieves the singleton instance of the <a href="org/apache/hadoop/hbase/util/EnvironmentEdge.html" title="interface in org.apache.hadoop.hbase.util"><code>EnvironmentEdge</code></a> that is
@@ -47209,6 +47211,8 @@
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html#getReplicationLag--">getReplicationLag()</a></span> - Method in class org.apache.hadoop.hbase.replication.<a href="org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad(ServerName[])</a></span> - Method 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/replication/regionserver/ReplicationLoad.html#getReplicationLoadSink--">getReplicationLoadSink()</a></span> - Method in class org.apache.hadoop.hbase.replication.regionserver.<a href="org/apache/hadoop/hbase/replication/regionserver/ReplicationLoad.html" title="class in org.apache.hadoop.hbase.replication.regionserver">ReplicationLoad</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/ServerLoad.html#getReplicationLoadSink--">getReplicationLoadSink()</a></span> - Method in class org.apache.hadoop.hbase.<a href="org/apache/hadoop/hbase/ServerLoad.html" title="class in org.apache.hadoop.hbase">ServerLoad</a></dt>
@@ -122942,8 +122946,12 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html#Z:Z__jamon_innerUnit__memstoreStats-java.io.Writer-java.util.List-">__jamon_innerUnit__memstoreStats(Writer, List&lt;RegionInfo&gt;)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmplImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/MasterStatusTmplImpl.html#Z:Z__jamon_innerUnit__peerConfigs-java.io.Writer-">__jamon_innerUnit__peerConfigs(Writer)</a></span> - Method 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/tmpl/regionserver/ServerMetricsTmplImpl.html#Z:Z__jamon_innerUnit__queueStats-java.io.Writer-org.apache.hadoop.hbase.regionserver.MetricsRegionServerWrapper-org.apache.hadoop.hbase.ipc.MetricsHBaseServerWrapper-">__jamon_innerUnit__queueStats(Writer, MetricsRegionServerWrapper, MetricsHBaseServerWrapper)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/ServerMetricsTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">ServerMetricsTmplImpl</a></dt>
 <dd>&nbsp;</dd>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__replicationStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__replicationStats(Writer, ServerName[])</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmplImpl</a></dt>
+<dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__requestStats(Writer, ServerName[])</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmplImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-java.util.List-">__jamon_innerUnit__requestStats(Writer, List&lt;RegionInfo&gt;)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.regionserver.<a href="org/apache/hadoop/hbase/tmpl/regionserver/RegionListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.regionserver">RegionListTmplImpl</a></dt>
@@ -122962,7 +122970,7 @@ the order they are declared.</div>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmplImpl.html#Z:Z__jamon_innerUnit__rsGroupLink-java.io.Writer-java.lang.String-">__jamon_innerUnit__rsGroupLink(Writer, String)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RSGroupListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RSGroupListTmplImpl</a></dt>
 <dd>&nbsp;</dd>
-<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">__jamon_innerUnit__serverNameLink(Writer, ServerName, ServerMetrics)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmplImpl</a></dt>
+<dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-">__jamon_innerUnit__serverNameLink(Writer, ServerName)</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmplImpl</a></dt>
 <dd>&nbsp;</dd>
 <dt><span class="memberNameLink"><a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__storeStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__storeStats(Writer, ServerName[])</a></span> - Method in class org.apache.hadoop.hbase.tmpl.master.<a href="org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmplImpl</a></dt>
 <dd>&nbsp;</dd>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
index f7aa217..a48899f 100644
--- a/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/backup/package-tree.html
@@ -167,10 +167,10 @@
 <ul>
 <li type="circle">java.lang.<a href="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/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/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupState.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupInfo.BackupPhase.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupInfo.BackupPhase</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.backup.<a href="../../../../../org/apache/hadoop/hbase/backup/BackupType.html" title="enum in org.apache.hadoop.hbase.backup"><span class="typeNameLink">BackupType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/class-use/ServerMetrics.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ServerMetrics.html b/devapidocs/org/apache/hadoop/hbase/class-use/ServerMetrics.html
index ae048b8..4d08dc7e 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerMetrics.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerMetrics.html
@@ -400,21 +400,6 @@
 </a>
 <h3>Uses of <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a> in <a href="../../../../../org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a></h3>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
-<caption><span>Methods in <a href="../../../../../org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a> with parameters of type <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a></span><span class="tabEnd">&nbsp;</span></caption>
-<tr>
-<th class="colFirst" scope="col">Modifier and Type</th>
-<th class="colLast" scope="col">Method and Description</th>
-</tr>
-<tbody>
-<tr class="altColor">
-<td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">__jamon_innerUnit__serverNameLink</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                                 <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
-                                 <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;serverLoad)</code>&nbsp;</td>
-</tr>
-</tbody>
-</table>
-<table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">
 <caption><span>Method parameters in <a href="../../../../../org/apache/hadoop/hbase/tmpl/master/package-summary.html">org.apache.hadoop.hbase.tmpl.master</a> with type arguments of type <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</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/eab0a960/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
index 6993bcb..7884712 100644
--- a/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
+++ b/devapidocs/org/apache/hadoop/hbase/class-use/ServerName.html
@@ -3380,14 +3380,18 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+</tr>
+<tr class="altColor">
 <td class="colFirst"><code><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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getSecondaryToRegionInfoMap--">getSecondaryToRegionInfoMap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,org.apache.hadoop.hbase.shaded.protobuf.generated.HBaseProtos.RegionServerInfo&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionServerTracker.html#getServerInfo-java.lang.String-">getServerInfo</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) <a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a></span>(<a href="../../../../../org/apache/hadoop/hbase/TableName.html" title="class in org.apache.hadoop.hbase">TableName</a>&nbsp;tableName,
                     byte[]&nbsp;rowKey)</code>
@@ -3395,25 +3399,25 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  the given row.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">SnapshotOfRegionAssignmentFromMeta.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SnapshotOfRegionAssignmentFromMeta.html#getTertiaryToRegionInfoMap--">getTertiaryToRegionInfoMap</a></span>()</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a></span>()</code>
 <div class="block">List region servers marked as decommissioned (previously called 'draining') to not get regions
  assigned to them.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#retainAssignment-java.util.Map-java.util.List-">retainAssignment</a></span>(<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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;regions,
                 <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
 <div class="block">Assign regions to the previously hosting region server</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</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/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&gt;</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#roundRobinAssignment-java.util.List-java.util.List-">roundRobinAssignment</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;regions,
                     <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</code>
@@ -3552,130 +3556,134 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
 <td class="colFirst"><code>org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.AdminService.BlockingInterface</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getRsAdmin-org.apache.hadoop.hbase.ServerName-">getRsAdmin</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>int</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#getServerVersion-org.apache.hadoop.hbase.ServerName-">getServerVersion</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">May return 0 when server is not online.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/Date.html?is-external=true" title="class or interface in java.util">Date</a></code></td>
 <td class="colLast"><span class="typeNameLabel">DeadServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html#getTimeOfDeath-org.apache.hadoop.hbase.ServerName-">getTimeOfDeath</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</code>
 <div class="block">Get the time when a server died</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.html#handleDeadWorker-org.apache.hadoop.hbase.ServerName-">handleDeadWorker</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;workerName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">SplitLogManager.Task.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/SplitLogManager.Task.html#heartbeat-long-int-org.apache.hadoop.hbase.ServerName-">heartbeat</a></span>(long&nbsp;time,
          int&nbsp;version,
          <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;worker)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isClosingOrClosedOnServer-org.apache.hadoop.hbase.ServerName-">isClosingOrClosedOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">DeadServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html#isDeadServer-org.apache.hadoop.hbase.ServerName-">isDeadServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isMergingNewOnServer-org.apache.hadoop.hbase.ServerName-">isMergingNewOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isMergingNewOrOfflineOnServer-org.apache.hadoop.hbase.ServerName-">isMergingNewOrOfflineOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isMergingNewOrOpenedOnServer-org.apache.hadoop.hbase.ServerName-">isMergingNewOrOpenedOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isMergingOnServer-org.apache.hadoop.hbase.ServerName-">isMergingOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isOnServer-org.apache.hadoop.hbase.ServerName-">isOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isOpenedOnServer-org.apache.hadoop.hbase.ServerName-">isOpenedOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isOpeningOrFailedOpenOnServer-org.apache.hadoop.hbase.ServerName-">isOpeningOrFailedOpenOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isOpeningOrOpenedOnServer-org.apache.hadoop.hbase.ServerName-">isOpeningOrOpenedOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#isServerDead-org.apache.hadoop.hbase.ServerName-">isServerDead</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">Check if a server is known to be dead.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#isServerOnline-org.apache.hadoop.hbase.ServerName-">isServerOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isSplittingNewOnServer-org.apache.hadoop.hbase.ServerName-">isSplittingNewOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isSplittingOnServer-org.apache.hadoop.hbase.ServerName-">isSplittingOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isSplittingOrOpenedOnServer-org.apache.hadoop.hbase.ServerName-">isSplittingOrOpenedOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionState.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionState.html#isSplittingOrSplitOnServer-org.apache.hadoop.hbase.ServerName-">isSplittingOrSplitOnServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#moveFromOnlineToDeadServers-org.apache.hadoop.hbase.ServerName-">moveFromOnlineToDeadServers</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">DeadServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html#notifyServer-org.apache.hadoop.hbase.ServerName-">notifyServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>
 <div class="block">Notify that we started processing this dead server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postMove-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">postMove</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region,
         <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;srcServer,
         <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#postRecommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">postRecommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                             <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preMove-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerName-">preMove</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region,
        <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;srcServer,
        <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;destServer)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterCoprocessorHost.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterCoprocessorHost.html#preRecommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">preRecommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                            <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                         <a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;byte[]&gt;&nbsp;encodedRegionNames)</code>
@@ -3683,82 +3691,82 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
  assignments.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>(package private) void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#recordNewServerWithLock-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">recordNewServerWithLock</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
                        <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;sl)</code>
 <div class="block">Adds the onlineServers list.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">LoadBalancer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/LoadBalancer.html#regionOnline-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">regionOnline</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
             <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>
 <div class="block">Marks the region as online at balancer.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">AssignmentListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/AssignmentListener.html#regionOpened-org.apache.hadoop.hbase.client.RegionInfo-org.apache.hadoop.hbase.ServerName-">regionOpened</a></span>(<a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;regionInfo,
             <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">The region was opened on the specified server.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#regionServerReport-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">regionServerReport</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn,
                   <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;sl)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">DrainingServerTracker.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DrainingServerTracker.html#remove-org.apache.hadoop.hbase.ServerName-">remove</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">DeadServer.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/DeadServer.html#removeDeadServer-org.apache.hadoop.hbase.ServerName-">removeDeadServer</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;deadServerName)</code>
 <div class="block">remove the specified dead server</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>boolean</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#removeServerFromDrainList-org.apache.hadoop.hbase.ServerName-">removeServerFromDrainList</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#sendRegionWarmup-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.client.RegionInfo-">sendRegionWarmup</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;server,
                 <a href="../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;region)</code>
 <div class="block">Sends a WARMUP RPC to the specified server to warmup the specified region.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverAdded-org.apache.hadoop.hbase.ServerName-">serverAdded</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">The server has joined the cluster.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>default void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerListener.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerListener.html#serverRemoved-org.apache.hadoop.hbase.ServerName-">serverRemoved</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">The server was removed from the cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionPlan.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/RegionPlan.html#setDestination-org.apache.hadoop.hbase.ServerName-">setDestination</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;dest)</code>
 <div class="block">Set the destination server for the plan for this region.</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitLog-org.apache.hadoop.hbase.ServerName-">splitLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterWalManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/MasterWalManager.html#splitMetaLog-org.apache.hadoop.hbase.ServerName-">splitMetaLog</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>
 <div class="block">Specialized method to handle the splitting for meta WAL</div>
 </td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">ServerManager.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/master/ServerManager.html#updateLastFlushedSequenceIds-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">updateLastFlushedSequenceIds</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;sn,
                             <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;hsl)</code>
@@ -6298,25 +6306,29 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__requestStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                               <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__replicationStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__replicationStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                   <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
 <tr class="rowColor">
 <td class="colFirst"><code>private void</code></td>
-<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">__jamon_innerUnit__serverNameLink</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                                 <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
-                                 <a href="../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;serverLoad)</code>&nbsp;</td>
+<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__requestStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                               <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
 <tr class="altColor">
 <td class="colFirst"><code>private void</code></td>
+<td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-">__jamon_innerUnit__serverNameLink</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                 <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</td>
+</tr>
+<tr class="rowColor">
+<td class="colFirst"><code>private void</code></td>
 <td class="colLast"><span class="typeNameLabel">RegionServerListTmplImpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__storeStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__storeStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                              <a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr class="rowColor">
+<tr class="altColor">
 <td class="colFirst"><code><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html" title="class in org.apache.hadoop.hbase.tmpl.master">MasterStatusTmpl</a></code></td>
 <td class="colLast"><span class="typeNameLabel">MasterStatusTmpl.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#setMetaLocation-org.apache.hadoop.hbase.ServerName-">setMetaLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;p_metaLocation)</code>&nbsp;</td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><span class="typeNameLabel">MasterStatusTmpl.ImplData.</span><code><span class="memberNameLink"><a href="../../../../../org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#setMetaLocation-org.apache.hadoop.hbase.ServerName-">setMetaLocation</a></span>(<a href="../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</code>&nbsp;</td>
 </tr>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 0e798a1..46f5222 100644
--- a/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/client/package-tree.html
@@ -552,24 +552,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/AbstractResponse.ResponseType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AbstractResponse.ResponseType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/RegionLocateType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">RegionLocateType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/MobCompactPartitionPolicy.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MobCompactPartitionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/IsolationLevel.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">IsolationLevel</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/Consistency.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Consistency</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/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/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/AsyncProcessTask.SubmittedRows.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncProcessTask.SubmittedRows</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncRequestFutureImpl.Retry.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncRequestFutureImpl.Retry</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/MasterSwitchType.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">MasterSwitchType</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanControllerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">AsyncScanSingleRegionRpcRetryingCaller.ScanResumerState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/CompactionState.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">CompactionState</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.client.<a href="../../../../../org/apache/hadoop/hbase/client/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/Durability.html" title="enum in org.apache.hadoop.hbase.client"><span class="typeNameLink">Durability</span></a></li>
 </ul>
 </li>
 </ul>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 7324734..796e6a6 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/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>
-<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/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.Order.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.Order</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/RegexStringComparator.EngineType.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">RegexStringComparator.EngineType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/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/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/FuzzyRowFilter.SatisfiesCode.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FuzzyRowFilter.SatisfiesCode</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/CompareFilter.CompareOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">CompareFilter.CompareOp</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FilterList.Operator.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">FilterList.Operator</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.filter.<a href="../../../../../org/apache/hadoop/hbase/filter/FuzzyRowFilter.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/BitComparator.BitwiseOp.html" title="enum in org.apache.hadoop.hbase.filter"><span class="typeNameLink">BitComparator.BitwiseOp</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 8f1a6b9..9055c81 100644
--- a/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/io/hfile/package-tree.html
@@ -273,12 +273,12 @@
 <ul>
 <li type="circle">java.lang.<a href="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/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.BlockCategory.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType.BlockCategory</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/CacheConfig.ExternalBlockCaches.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">CacheConfig.ExternalBlockCaches</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockPriority.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockPriority</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/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/Cacheable.MemoryType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">Cacheable.MemoryType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.io.hfile.<a href="../../../../../../org/apache/hadoop/hbase/io/hfile/BlockType.html" title="enum in org.apache.hadoop.hbase.io.hfile"><span class="typeNameLink">BlockType</span></a></li>
 </ul>
 </li>
 </ul>


[14/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
index 83a993e..29b47a3 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
@@ -16,390 +16,396 @@
 <span class="sourceLineNo">008</span>// 33, 1<a name="line.8"></a>
 <span class="sourceLineNo">009</span>import java.io.IOException;<a name="line.9"></a>
 <span class="sourceLineNo">010</span>// 34, 1<a name="line.10"></a>
-<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.11"></a>
+<span class="sourceLineNo">011</span>import org.apache.hadoop.hbase.client.replication.ReplicationPeerConfigUtil;<a name="line.11"></a>
 <span class="sourceLineNo">012</span>// 35, 1<a name="line.12"></a>
-<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.13"></a>
+<span class="sourceLineNo">013</span>import org.apache.hadoop.hbase.client.RegionInfo;<a name="line.13"></a>
 <span class="sourceLineNo">014</span>// 36, 1<a name="line.14"></a>
-<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.15"></a>
+<span class="sourceLineNo">015</span>import org.apache.hadoop.hbase.client.TableDescriptor;<a name="line.15"></a>
 <span class="sourceLineNo">016</span>// 37, 1<a name="line.16"></a>
-<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.HConstants;<a name="line.17"></a>
+<span class="sourceLineNo">017</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.17"></a>
 <span class="sourceLineNo">018</span>// 38, 1<a name="line.18"></a>
-<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.19"></a>
+<span class="sourceLineNo">019</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.19"></a>
 <span class="sourceLineNo">020</span>// 39, 1<a name="line.20"></a>
-<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.21"></a>
+<span class="sourceLineNo">021</span>import org.apache.hadoop.hbase.HBaseConfiguration;<a name="line.21"></a>
 <span class="sourceLineNo">022</span>// 40, 1<a name="line.22"></a>
-<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.ServerName;<a name="line.23"></a>
+<span class="sourceLineNo">023</span>import org.apache.hadoop.hbase.HConstants;<a name="line.23"></a>
 <span class="sourceLineNo">024</span>// 41, 1<a name="line.24"></a>
-<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.TableName;<a name="line.25"></a>
+<span class="sourceLineNo">025</span>import org.apache.hadoop.hbase.HTableDescriptor;<a name="line.25"></a>
 <span class="sourceLineNo">026</span>// 42, 1<a name="line.26"></a>
-<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.27"></a>
+<span class="sourceLineNo">027</span>import org.apache.hadoop.hbase.NamespaceDescriptor;<a name="line.27"></a>
 <span class="sourceLineNo">028</span>// 43, 1<a name="line.28"></a>
-<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.29"></a>
+<span class="sourceLineNo">029</span>import org.apache.hadoop.hbase.ServerName;<a name="line.29"></a>
 <span class="sourceLineNo">030</span>// 44, 1<a name="line.30"></a>
-<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.31"></a>
+<span class="sourceLineNo">031</span>import org.apache.hadoop.hbase.TableName;<a name="line.31"></a>
 <span class="sourceLineNo">032</span>// 45, 1<a name="line.32"></a>
-<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.33"></a>
+<span class="sourceLineNo">033</span>import org.apache.hadoop.hbase.client.Admin;<a name="line.33"></a>
 <span class="sourceLineNo">034</span>// 46, 1<a name="line.34"></a>
-<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.35"></a>
+<span class="sourceLineNo">035</span>import org.apache.hadoop.hbase.client.MasterSwitchType;<a name="line.35"></a>
 <span class="sourceLineNo">036</span>// 47, 1<a name="line.36"></a>
-<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.37"></a>
+<span class="sourceLineNo">037</span>import org.apache.hadoop.hbase.master.assignment.AssignmentManager;<a name="line.37"></a>
 <span class="sourceLineNo">038</span>// 48, 1<a name="line.38"></a>
-<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.39"></a>
+<span class="sourceLineNo">039</span>import org.apache.hadoop.hbase.master.DeadServer;<a name="line.39"></a>
 <span class="sourceLineNo">040</span>// 49, 1<a name="line.40"></a>
-<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.41"></a>
+<span class="sourceLineNo">041</span>import org.apache.hadoop.hbase.master.HMaster;<a name="line.41"></a>
 <span class="sourceLineNo">042</span>// 50, 1<a name="line.42"></a>
-<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.43"></a>
+<span class="sourceLineNo">043</span>import org.apache.hadoop.hbase.master.RegionState;<a name="line.43"></a>
 <span class="sourceLineNo">044</span>// 51, 1<a name="line.44"></a>
-<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.45"></a>
+<span class="sourceLineNo">045</span>import org.apache.hadoop.hbase.master.ServerManager;<a name="line.45"></a>
 <span class="sourceLineNo">046</span>// 52, 1<a name="line.46"></a>
-<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.47"></a>
+<span class="sourceLineNo">047</span>import org.apache.hadoop.hbase.protobuf.ProtobufUtil;<a name="line.47"></a>
 <span class="sourceLineNo">048</span>// 53, 1<a name="line.48"></a>
-<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.49"></a>
+<span class="sourceLineNo">049</span>import org.apache.hadoop.hbase.quotas.QuotaUtil;<a name="line.49"></a>
 <span class="sourceLineNo">050</span>// 54, 1<a name="line.50"></a>
-<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.51"></a>
+<span class="sourceLineNo">051</span>import org.apache.hadoop.hbase.security.access.AccessControlLists;<a name="line.51"></a>
 <span class="sourceLineNo">052</span>// 55, 1<a name="line.52"></a>
-<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.53"></a>
+<span class="sourceLineNo">053</span>import org.apache.hadoop.hbase.security.visibility.VisibilityConstants;<a name="line.53"></a>
 <span class="sourceLineNo">054</span>// 56, 1<a name="line.54"></a>
-<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.55"></a>
+<span class="sourceLineNo">055</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.55"></a>
 <span class="sourceLineNo">056</span>// 57, 1<a name="line.56"></a>
-<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.57"></a>
+<span class="sourceLineNo">057</span>import org.apache.hadoop.hbase.tool.Canary;<a name="line.57"></a>
 <span class="sourceLineNo">058</span>// 58, 1<a name="line.58"></a>
-<span class="sourceLineNo">059</span>import org.apache.hadoop.util.StringUtils;<a name="line.59"></a>
-<span class="sourceLineNo">060</span><a name="line.60"></a>
-<span class="sourceLineNo">061</span>@org.jamon.annotations.Template(<a name="line.61"></a>
-<span class="sourceLineNo">062</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.62"></a>
-<span class="sourceLineNo">063</span>  requiredArguments = {<a name="line.63"></a>
-<span class="sourceLineNo">064</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.64"></a>
-<span class="sourceLineNo">065</span>  optionalArguments = {<a name="line.65"></a>
-<span class="sourceLineNo">066</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.66"></a>
-<span class="sourceLineNo">067</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.67"></a>
-<span class="sourceLineNo">068</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.68"></a>
-<span class="sourceLineNo">069</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.69"></a>
-<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.70"></a>
-<span class="sourceLineNo">071</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.71"></a>
-<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.72"></a>
-<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.73"></a>
-<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.74"></a>
-<span class="sourceLineNo">075</span>public class MasterStatusTmpl<a name="line.75"></a>
-<span class="sourceLineNo">076</span>  extends org.jamon.AbstractTemplateProxy<a name="line.76"></a>
-<span class="sourceLineNo">077</span>{<a name="line.77"></a>
-<span class="sourceLineNo">078</span>  <a name="line.78"></a>
-<span class="sourceLineNo">079</span>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.79"></a>
-<span class="sourceLineNo">080</span>  {<a name="line.80"></a>
-<span class="sourceLineNo">081</span>     super(p_manager);<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>  protected MasterStatusTmpl(String p_path)<a name="line.84"></a>
-<span class="sourceLineNo">085</span>  {<a name="line.85"></a>
-<span class="sourceLineNo">086</span>    super(p_path);<a name="line.86"></a>
-<span class="sourceLineNo">087</span>  }<a name="line.87"></a>
-<span class="sourceLineNo">088</span>  <a name="line.88"></a>
-<span class="sourceLineNo">089</span>  public MasterStatusTmpl()<a name="line.89"></a>
-<span class="sourceLineNo">090</span>  {<a name="line.90"></a>
-<span class="sourceLineNo">091</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.91"></a>
-<span class="sourceLineNo">092</span>  }<a name="line.92"></a>
-<span class="sourceLineNo">093</span>  <a name="line.93"></a>
-<span class="sourceLineNo">094</span>  public interface Intf<a name="line.94"></a>
-<span class="sourceLineNo">095</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.95"></a>
+<span class="sourceLineNo">059</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.59"></a>
+<span class="sourceLineNo">060</span>// 59, 1<a name="line.60"></a>
+<span class="sourceLineNo">061</span>import org.apache.hadoop.hbase.util.FSUtils;<a name="line.61"></a>
+<span class="sourceLineNo">062</span>// 60, 1<a name="line.62"></a>
+<span class="sourceLineNo">063</span>import org.apache.hadoop.hbase.util.JvmVersion;<a name="line.63"></a>
+<span class="sourceLineNo">064</span>// 61, 1<a name="line.64"></a>
+<span class="sourceLineNo">065</span>import org.apache.hadoop.util.StringUtils;<a name="line.65"></a>
+<span class="sourceLineNo">066</span><a name="line.66"></a>
+<span class="sourceLineNo">067</span>@org.jamon.annotations.Template(<a name="line.67"></a>
+<span class="sourceLineNo">068</span>  signature = "767EF6CBA3457ABF31A306ADBA3A7715",<a name="line.68"></a>
+<span class="sourceLineNo">069</span>  requiredArguments = {<a name="line.69"></a>
+<span class="sourceLineNo">070</span>    @org.jamon.annotations.Argument(name = "master", type = "HMaster")},<a name="line.70"></a>
+<span class="sourceLineNo">071</span>  optionalArguments = {<a name="line.71"></a>
+<span class="sourceLineNo">072</span>    @org.jamon.annotations.Argument(name = "assignmentManager", type = "AssignmentManager"),<a name="line.72"></a>
+<span class="sourceLineNo">073</span>    @org.jamon.annotations.Argument(name = "catalogJanitorEnabled", type = "boolean"),<a name="line.73"></a>
+<span class="sourceLineNo">074</span>    @org.jamon.annotations.Argument(name = "deadServers", type = "Set&lt;ServerName&gt;"),<a name="line.74"></a>
+<span class="sourceLineNo">075</span>    @org.jamon.annotations.Argument(name = "filter", type = "String"),<a name="line.75"></a>
+<span class="sourceLineNo">076</span>    @org.jamon.annotations.Argument(name = "format", type = "String"),<a name="line.76"></a>
+<span class="sourceLineNo">077</span>    @org.jamon.annotations.Argument(name = "frags", type = "Map&lt;String,Integer&gt;"),<a name="line.77"></a>
+<span class="sourceLineNo">078</span>    @org.jamon.annotations.Argument(name = "metaLocation", type = "ServerName"),<a name="line.78"></a>
+<span class="sourceLineNo">079</span>    @org.jamon.annotations.Argument(name = "serverManager", type = "ServerManager"),<a name="line.79"></a>
+<span class="sourceLineNo">080</span>    @org.jamon.annotations.Argument(name = "servers", type = "List&lt;ServerName&gt;")})<a name="line.80"></a>
+<span class="sourceLineNo">081</span>public class MasterStatusTmpl<a name="line.81"></a>
+<span class="sourceLineNo">082</span>  extends org.jamon.AbstractTemplateProxy<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>  public MasterStatusTmpl(org.jamon.TemplateManager p_manager)<a name="line.85"></a>
+<span class="sourceLineNo">086</span>  {<a name="line.86"></a>
+<span class="sourceLineNo">087</span>     super(p_manager);<a name="line.87"></a>
+<span class="sourceLineNo">088</span>  }<a name="line.88"></a>
+<span class="sourceLineNo">089</span>  <a name="line.89"></a>
+<span class="sourceLineNo">090</span>  protected MasterStatusTmpl(String p_path)<a name="line.90"></a>
+<span class="sourceLineNo">091</span>  {<a name="line.91"></a>
+<span class="sourceLineNo">092</span>    super(p_path);<a name="line.92"></a>
+<span class="sourceLineNo">093</span>  }<a name="line.93"></a>
+<span class="sourceLineNo">094</span>  <a name="line.94"></a>
+<span class="sourceLineNo">095</span>  public MasterStatusTmpl()<a name="line.95"></a>
 <span class="sourceLineNo">096</span>  {<a name="line.96"></a>
-<span class="sourceLineNo">097</span>    <a name="line.97"></a>
-<span class="sourceLineNo">098</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.101"></a>
-<span class="sourceLineNo">102</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.102"></a>
-<span class="sourceLineNo">103</span>  {<a name="line.103"></a>
-<span class="sourceLineNo">104</span>    // 20, 1<a name="line.104"></a>
-<span class="sourceLineNo">105</span>    public void setMaster(HMaster master)<a name="line.105"></a>
-<span class="sourceLineNo">106</span>    {<a name="line.106"></a>
-<span class="sourceLineNo">107</span>      // 20, 1<a name="line.107"></a>
-<span class="sourceLineNo">108</span>      m_master = master;<a name="line.108"></a>
-<span class="sourceLineNo">109</span>    }<a name="line.109"></a>
-<span class="sourceLineNo">110</span>    public HMaster getMaster()<a name="line.110"></a>
-<span class="sourceLineNo">111</span>    {<a name="line.111"></a>
-<span class="sourceLineNo">112</span>      return m_master;<a name="line.112"></a>
-<span class="sourceLineNo">113</span>    }<a name="line.113"></a>
-<span class="sourceLineNo">114</span>    private HMaster m_master;<a name="line.114"></a>
-<span class="sourceLineNo">115</span>    // 29, 1<a name="line.115"></a>
-<span class="sourceLineNo">116</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.116"></a>
+<span class="sourceLineNo">097</span>     super("/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl");<a name="line.97"></a>
+<span class="sourceLineNo">098</span>  }<a name="line.98"></a>
+<span class="sourceLineNo">099</span>  <a name="line.99"></a>
+<span class="sourceLineNo">100</span>  public interface Intf<a name="line.100"></a>
+<span class="sourceLineNo">101</span>    extends org.jamon.AbstractTemplateProxy.Intf<a name="line.101"></a>
+<span class="sourceLineNo">102</span>  {<a name="line.102"></a>
+<span class="sourceLineNo">103</span>    <a name="line.103"></a>
+<span class="sourceLineNo">104</span>    void renderNoFlush(final java.io.Writer jamonWriter) throws java.io.IOException;<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>  public static class ImplData<a name="line.107"></a>
+<span class="sourceLineNo">108</span>    extends org.jamon.AbstractTemplateProxy.ImplData<a name="line.108"></a>
+<span class="sourceLineNo">109</span>  {<a name="line.109"></a>
+<span class="sourceLineNo">110</span>    // 20, 1<a name="line.110"></a>
+<span class="sourceLineNo">111</span>    public void setMaster(HMaster master)<a name="line.111"></a>
+<span class="sourceLineNo">112</span>    {<a name="line.112"></a>
+<span class="sourceLineNo">113</span>      // 20, 1<a name="line.113"></a>
+<span class="sourceLineNo">114</span>      m_master = master;<a name="line.114"></a>
+<span class="sourceLineNo">115</span>    }<a name="line.115"></a>
+<span class="sourceLineNo">116</span>    public HMaster getMaster()<a name="line.116"></a>
 <span class="sourceLineNo">117</span>    {<a name="line.117"></a>
-<span class="sourceLineNo">118</span>      // 29, 1<a name="line.118"></a>
-<span class="sourceLineNo">119</span>      m_assignmentManager = assignmentManager;<a name="line.119"></a>
-<span class="sourceLineNo">120</span>      m_assignmentManager__IsNotDefault = true;<a name="line.120"></a>
-<span class="sourceLineNo">121</span>    }<a name="line.121"></a>
-<span class="sourceLineNo">122</span>    public AssignmentManager getAssignmentManager()<a name="line.122"></a>
+<span class="sourceLineNo">118</span>      return m_master;<a name="line.118"></a>
+<span class="sourceLineNo">119</span>    }<a name="line.119"></a>
+<span class="sourceLineNo">120</span>    private HMaster m_master;<a name="line.120"></a>
+<span class="sourceLineNo">121</span>    // 29, 1<a name="line.121"></a>
+<span class="sourceLineNo">122</span>    public void setAssignmentManager(AssignmentManager assignmentManager)<a name="line.122"></a>
 <span class="sourceLineNo">123</span>    {<a name="line.123"></a>
-<span class="sourceLineNo">124</span>      return m_assignmentManager;<a name="line.124"></a>
-<span class="sourceLineNo">125</span>    }<a name="line.125"></a>
-<span class="sourceLineNo">126</span>    private AssignmentManager m_assignmentManager;<a name="line.126"></a>
-<span class="sourceLineNo">127</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.127"></a>
-<span class="sourceLineNo">128</span>    {<a name="line.128"></a>
-<span class="sourceLineNo">129</span>      return m_assignmentManager__IsNotDefault;<a name="line.129"></a>
-<span class="sourceLineNo">130</span>    }<a name="line.130"></a>
-<span class="sourceLineNo">131</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.131"></a>
-<span class="sourceLineNo">132</span>    // 25, 1<a name="line.132"></a>
-<span class="sourceLineNo">133</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.133"></a>
+<span class="sourceLineNo">124</span>      // 29, 1<a name="line.124"></a>
+<span class="sourceLineNo">125</span>      m_assignmentManager = assignmentManager;<a name="line.125"></a>
+<span class="sourceLineNo">126</span>      m_assignmentManager__IsNotDefault = true;<a name="line.126"></a>
+<span class="sourceLineNo">127</span>    }<a name="line.127"></a>
+<span class="sourceLineNo">128</span>    public AssignmentManager getAssignmentManager()<a name="line.128"></a>
+<span class="sourceLineNo">129</span>    {<a name="line.129"></a>
+<span class="sourceLineNo">130</span>      return m_assignmentManager;<a name="line.130"></a>
+<span class="sourceLineNo">131</span>    }<a name="line.131"></a>
+<span class="sourceLineNo">132</span>    private AssignmentManager m_assignmentManager;<a name="line.132"></a>
+<span class="sourceLineNo">133</span>    public boolean getAssignmentManager__IsNotDefault()<a name="line.133"></a>
 <span class="sourceLineNo">134</span>    {<a name="line.134"></a>
-<span class="sourceLineNo">135</span>      // 25, 1<a name="line.135"></a>
-<span class="sourceLineNo">136</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.136"></a>
-<span class="sourceLineNo">137</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.137"></a>
-<span class="sourceLineNo">138</span>    }<a name="line.138"></a>
-<span class="sourceLineNo">139</span>    public boolean getCatalogJanitorEnabled()<a name="line.139"></a>
+<span class="sourceLineNo">135</span>      return m_assignmentManager__IsNotDefault;<a name="line.135"></a>
+<span class="sourceLineNo">136</span>    }<a name="line.136"></a>
+<span class="sourceLineNo">137</span>    private boolean m_assignmentManager__IsNotDefault;<a name="line.137"></a>
+<span class="sourceLineNo">138</span>    // 25, 1<a name="line.138"></a>
+<span class="sourceLineNo">139</span>    public void setCatalogJanitorEnabled(boolean catalogJanitorEnabled)<a name="line.139"></a>
 <span class="sourceLineNo">140</span>    {<a name="line.140"></a>
-<span class="sourceLineNo">141</span>      return m_catalogJanitorEnabled;<a name="line.141"></a>
-<span class="sourceLineNo">142</span>    }<a name="line.142"></a>
-<span class="sourceLineNo">143</span>    private boolean m_catalogJanitorEnabled;<a name="line.143"></a>
-<span class="sourceLineNo">144</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    {<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    }<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.148"></a>
-<span class="sourceLineNo">149</span>    // 24, 1<a name="line.149"></a>
-<span class="sourceLineNo">150</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.150"></a>
+<span class="sourceLineNo">141</span>      // 25, 1<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      m_catalogJanitorEnabled = catalogJanitorEnabled;<a name="line.142"></a>
+<span class="sourceLineNo">143</span>      m_catalogJanitorEnabled__IsNotDefault = true;<a name="line.143"></a>
+<span class="sourceLineNo">144</span>    }<a name="line.144"></a>
+<span class="sourceLineNo">145</span>    public boolean getCatalogJanitorEnabled()<a name="line.145"></a>
+<span class="sourceLineNo">146</span>    {<a name="line.146"></a>
+<span class="sourceLineNo">147</span>      return m_catalogJanitorEnabled;<a name="line.147"></a>
+<span class="sourceLineNo">148</span>    }<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private boolean m_catalogJanitorEnabled;<a name="line.149"></a>
+<span class="sourceLineNo">150</span>    public boolean getCatalogJanitorEnabled__IsNotDefault()<a name="line.150"></a>
 <span class="sourceLineNo">151</span>    {<a name="line.151"></a>
-<span class="sourceLineNo">152</span>      // 24, 1<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      m_deadServers = deadServers;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      m_deadServers__IsNotDefault = true;<a name="line.154"></a>
-<span class="sourceLineNo">155</span>    }<a name="line.155"></a>
-<span class="sourceLineNo">156</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.156"></a>
+<span class="sourceLineNo">152</span>      return m_catalogJanitorEnabled__IsNotDefault;<a name="line.152"></a>
+<span class="sourceLineNo">153</span>    }<a name="line.153"></a>
+<span class="sourceLineNo">154</span>    private boolean m_catalogJanitorEnabled__IsNotDefault;<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    // 24, 1<a name="line.155"></a>
+<span class="sourceLineNo">156</span>    public void setDeadServers(Set&lt;ServerName&gt; deadServers)<a name="line.156"></a>
 <span class="sourceLineNo">157</span>    {<a name="line.157"></a>
-<span class="sourceLineNo">158</span>      return m_deadServers;<a name="line.158"></a>
-<span class="sourceLineNo">159</span>    }<a name="line.159"></a>
-<span class="sourceLineNo">160</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean getDeadServers__IsNotDefault()<a name="line.161"></a>
-<span class="sourceLineNo">162</span>    {<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      return m_deadServers__IsNotDefault;<a name="line.163"></a>
-<span class="sourceLineNo">164</span>    }<a name="line.164"></a>
-<span class="sourceLineNo">165</span>    private boolean m_deadServers__IsNotDefault;<a name="line.165"></a>
-<span class="sourceLineNo">166</span>    // 26, 1<a name="line.166"></a>
-<span class="sourceLineNo">167</span>    public void setFilter(String filter)<a name="line.167"></a>
+<span class="sourceLineNo">158</span>      // 24, 1<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      m_deadServers = deadServers;<a name="line.159"></a>
+<span class="sourceLineNo">160</span>      m_deadServers__IsNotDefault = true;<a name="line.160"></a>
+<span class="sourceLineNo">161</span>    }<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    public Set&lt;ServerName&gt; getDeadServers()<a name="line.162"></a>
+<span class="sourceLineNo">163</span>    {<a name="line.163"></a>
+<span class="sourceLineNo">164</span>      return m_deadServers;<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    }<a name="line.165"></a>
+<span class="sourceLineNo">166</span>    private Set&lt;ServerName&gt; m_deadServers;<a name="line.166"></a>
+<span class="sourceLineNo">167</span>    public boolean getDeadServers__IsNotDefault()<a name="line.167"></a>
 <span class="sourceLineNo">168</span>    {<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      // 26, 1<a name="line.169"></a>
-<span class="sourceLineNo">170</span>      m_filter = filter;<a name="line.170"></a>
-<span class="sourceLineNo">171</span>      m_filter__IsNotDefault = true;<a name="line.171"></a>
-<span class="sourceLineNo">172</span>    }<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public String getFilter()<a name="line.173"></a>
+<span class="sourceLineNo">169</span>      return m_deadServers__IsNotDefault;<a name="line.169"></a>
+<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
+<span class="sourceLineNo">171</span>    private boolean m_deadServers__IsNotDefault;<a name="line.171"></a>
+<span class="sourceLineNo">172</span>    // 26, 1<a name="line.172"></a>
+<span class="sourceLineNo">173</span>    public void setFilter(String filter)<a name="line.173"></a>
 <span class="sourceLineNo">174</span>    {<a name="line.174"></a>
-<span class="sourceLineNo">175</span>      return m_filter;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>    }<a name="line.176"></a>
-<span class="sourceLineNo">177</span>    private String m_filter;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public boolean getFilter__IsNotDefault()<a name="line.178"></a>
-<span class="sourceLineNo">179</span>    {<a name="line.179"></a>
-<span class="sourceLineNo">180</span>      return m_filter__IsNotDefault;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>    }<a name="line.181"></a>
-<span class="sourceLineNo">182</span>    private boolean m_filter__IsNotDefault;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    // 27, 1<a name="line.183"></a>
-<span class="sourceLineNo">184</span>    public void setFormat(String format)<a name="line.184"></a>
+<span class="sourceLineNo">175</span>      // 26, 1<a name="line.175"></a>
+<span class="sourceLineNo">176</span>      m_filter = filter;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>      m_filter__IsNotDefault = true;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>    }<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    public String getFilter()<a name="line.179"></a>
+<span class="sourceLineNo">180</span>    {<a name="line.180"></a>
+<span class="sourceLineNo">181</span>      return m_filter;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    }<a name="line.182"></a>
+<span class="sourceLineNo">183</span>    private String m_filter;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>    public boolean getFilter__IsNotDefault()<a name="line.184"></a>
 <span class="sourceLineNo">185</span>    {<a name="line.185"></a>
-<span class="sourceLineNo">186</span>      // 27, 1<a name="line.186"></a>
-<span class="sourceLineNo">187</span>      m_format = format;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>      m_format__IsNotDefault = true;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>    }<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    public String getFormat()<a name="line.190"></a>
+<span class="sourceLineNo">186</span>      return m_filter__IsNotDefault;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>    }<a name="line.187"></a>
+<span class="sourceLineNo">188</span>    private boolean m_filter__IsNotDefault;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>    // 27, 1<a name="line.189"></a>
+<span class="sourceLineNo">190</span>    public void setFormat(String format)<a name="line.190"></a>
 <span class="sourceLineNo">191</span>    {<a name="line.191"></a>
-<span class="sourceLineNo">192</span>      return m_format;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>    }<a name="line.193"></a>
-<span class="sourceLineNo">194</span>    private String m_format;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>    public boolean getFormat__IsNotDefault()<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    {<a name="line.196"></a>
-<span class="sourceLineNo">197</span>      return m_format__IsNotDefault;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>    }<a name="line.198"></a>
-<span class="sourceLineNo">199</span>    private boolean m_format__IsNotDefault;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>    // 21, 1<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.201"></a>
+<span class="sourceLineNo">192</span>      // 27, 1<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      m_format = format;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>      m_format__IsNotDefault = true;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>    }<a name="line.195"></a>
+<span class="sourceLineNo">196</span>    public String getFormat()<a name="line.196"></a>
+<span class="sourceLineNo">197</span>    {<a name="line.197"></a>
+<span class="sourceLineNo">198</span>      return m_format;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>    }<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    private String m_format;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>    public boolean getFormat__IsNotDefault()<a name="line.201"></a>
 <span class="sourceLineNo">202</span>    {<a name="line.202"></a>
-<span class="sourceLineNo">203</span>      // 21, 1<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      m_frags = frags;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>      m_frags__IsNotDefault = true;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    }<a name="line.206"></a>
-<span class="sourceLineNo">207</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.207"></a>
+<span class="sourceLineNo">203</span>      return m_format__IsNotDefault;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>    }<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    private boolean m_format__IsNotDefault;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    // 21, 1<a name="line.206"></a>
+<span class="sourceLineNo">207</span>    public void setFrags(Map&lt;String,Integer&gt; frags)<a name="line.207"></a>
 <span class="sourceLineNo">208</span>    {<a name="line.208"></a>
-<span class="sourceLineNo">209</span>      return m_frags;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>    }<a name="line.210"></a>
-<span class="sourceLineNo">211</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.211"></a>
-<span class="sourceLineNo">212</span>    public boolean getFrags__IsNotDefault()<a name="line.212"></a>
-<span class="sourceLineNo">213</span>    {<a name="line.213"></a>
-<span class="sourceLineNo">214</span>      return m_frags__IsNotDefault;<a name="line.214"></a>
-<span class="sourceLineNo">215</span>    }<a name="line.215"></a>
-<span class="sourceLineNo">216</span>    private boolean m_frags__IsNotDefault;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>    // 22, 1<a name="line.217"></a>
-<span class="sourceLineNo">218</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.218"></a>
+<span class="sourceLineNo">209</span>      // 21, 1<a name="line.209"></a>
+<span class="sourceLineNo">210</span>      m_frags = frags;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>      m_frags__IsNotDefault = true;<a name="line.211"></a>
+<span class="sourceLineNo">212</span>    }<a name="line.212"></a>
+<span class="sourceLineNo">213</span>    public Map&lt;String,Integer&gt; getFrags()<a name="line.213"></a>
+<span class="sourceLineNo">214</span>    {<a name="line.214"></a>
+<span class="sourceLineNo">215</span>      return m_frags;<a name="line.215"></a>
+<span class="sourceLineNo">216</span>    }<a name="line.216"></a>
+<span class="sourceLineNo">217</span>    private Map&lt;String,Integer&gt; m_frags;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>    public boolean getFrags__IsNotDefault()<a name="line.218"></a>
 <span class="sourceLineNo">219</span>    {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>      // 22, 1<a name="line.220"></a>
-<span class="sourceLineNo">221</span>      m_metaLocation = metaLocation;<a name="line.221"></a>
-<span class="sourceLineNo">222</span>      m_metaLocation__IsNotDefault = true;<a name="line.222"></a>
-<span class="sourceLineNo">223</span>    }<a name="line.223"></a>
-<span class="sourceLineNo">224</span>    public ServerName getMetaLocation()<a name="line.224"></a>
+<span class="sourceLineNo">220</span>      return m_frags__IsNotDefault;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>    }<a name="line.221"></a>
+<span class="sourceLineNo">222</span>    private boolean m_frags__IsNotDefault;<a name="line.222"></a>
+<span class="sourceLineNo">223</span>    // 22, 1<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    public void setMetaLocation(ServerName metaLocation)<a name="line.224"></a>
 <span class="sourceLineNo">225</span>    {<a name="line.225"></a>
-<span class="sourceLineNo">226</span>      return m_metaLocation;<a name="line.226"></a>
-<span class="sourceLineNo">227</span>    }<a name="line.227"></a>
-<span class="sourceLineNo">228</span>    private ServerName m_metaLocation;<a name="line.228"></a>
-<span class="sourceLineNo">229</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.229"></a>
-<span class="sourceLineNo">230</span>    {<a name="line.230"></a>
-<span class="sourceLineNo">231</span>      return m_metaLocation__IsNotDefault;<a name="line.231"></a>
-<span class="sourceLineNo">232</span>    }<a name="line.232"></a>
-<span class="sourceLineNo">233</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.233"></a>
-<span class="sourceLineNo">234</span>    // 28, 1<a name="line.234"></a>
-<span class="sourceLineNo">235</span>    public void setServerManager(ServerManager serverManager)<a name="line.235"></a>
+<span class="sourceLineNo">226</span>      // 22, 1<a name="line.226"></a>
+<span class="sourceLineNo">227</span>      m_metaLocation = metaLocation;<a name="line.227"></a>
+<span class="sourceLineNo">228</span>      m_metaLocation__IsNotDefault = true;<a name="line.228"></a>
+<span class="sourceLineNo">229</span>    }<a name="line.229"></a>
+<span class="sourceLineNo">230</span>    public ServerName getMetaLocation()<a name="line.230"></a>
+<span class="sourceLineNo">231</span>    {<a name="line.231"></a>
+<span class="sourceLineNo">232</span>      return m_metaLocation;<a name="line.232"></a>
+<span class="sourceLineNo">233</span>    }<a name="line.233"></a>
+<span class="sourceLineNo">234</span>    private ServerName m_metaLocation;<a name="line.234"></a>
+<span class="sourceLineNo">235</span>    public boolean getMetaLocation__IsNotDefault()<a name="line.235"></a>
 <span class="sourceLineNo">236</span>    {<a name="line.236"></a>
-<span class="sourceLineNo">237</span>      // 28, 1<a name="line.237"></a>
-<span class="sourceLineNo">238</span>      m_serverManager = serverManager;<a name="line.238"></a>
-<span class="sourceLineNo">239</span>      m_serverManager__IsNotDefault = true;<a name="line.239"></a>
-<span class="sourceLineNo">240</span>    }<a name="line.240"></a>
-<span class="sourceLineNo">241</span>    public ServerManager getServerManager()<a name="line.241"></a>
+<span class="sourceLineNo">237</span>      return m_metaLocation__IsNotDefault;<a name="line.237"></a>
+<span class="sourceLineNo">238</span>    }<a name="line.238"></a>
+<span class="sourceLineNo">239</span>    private boolean m_metaLocation__IsNotDefault;<a name="line.239"></a>
+<span class="sourceLineNo">240</span>    // 28, 1<a name="line.240"></a>
+<span class="sourceLineNo">241</span>    public void setServerManager(ServerManager serverManager)<a name="line.241"></a>
 <span class="sourceLineNo">242</span>    {<a name="line.242"></a>
-<span class="sourceLineNo">243</span>      return m_serverManager;<a name="line.243"></a>
-<span class="sourceLineNo">244</span>    }<a name="line.244"></a>
-<span class="sourceLineNo">245</span>    private ServerManager m_serverManager;<a name="line.245"></a>
-<span class="sourceLineNo">246</span>    public boolean getServerManager__IsNotDefault()<a name="line.246"></a>
-<span class="sourceLineNo">247</span>    {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>      return m_serverManager__IsNotDefault;<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    }<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    private boolean m_serverManager__IsNotDefault;<a name="line.250"></a>
-<span class="sourceLineNo">251</span>    // 23, 1<a name="line.251"></a>
-<span class="sourceLineNo">252</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.252"></a>
+<span class="sourceLineNo">243</span>      // 28, 1<a name="line.243"></a>
+<span class="sourceLineNo">244</span>      m_serverManager = serverManager;<a name="line.244"></a>
+<span class="sourceLineNo">245</span>      m_serverManager__IsNotDefault = true;<a name="line.245"></a>
+<span class="sourceLineNo">246</span>    }<a name="line.246"></a>
+<span class="sourceLineNo">247</span>    public ServerManager getServerManager()<a name="line.247"></a>
+<span class="sourceLineNo">248</span>    {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>      return m_serverManager;<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    }<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    private ServerManager m_serverManager;<a name="line.251"></a>
+<span class="sourceLineNo">252</span>    public boolean getServerManager__IsNotDefault()<a name="line.252"></a>
 <span class="sourceLineNo">253</span>    {<a name="line.253"></a>
-<span class="sourceLineNo">254</span>      // 23, 1<a name="line.254"></a>
-<span class="sourceLineNo">255</span>      m_servers = servers;<a name="line.255"></a>
-<span class="sourceLineNo">256</span>      m_servers__IsNotDefault = true;<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    }<a name="line.257"></a>
-<span class="sourceLineNo">258</span>    public List&lt;ServerName&gt; getServers()<a name="line.258"></a>
+<span class="sourceLineNo">254</span>      return m_serverManager__IsNotDefault;<a name="line.254"></a>
+<span class="sourceLineNo">255</span>    }<a name="line.255"></a>
+<span class="sourceLineNo">256</span>    private boolean m_serverManager__IsNotDefault;<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    // 23, 1<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public void setServers(List&lt;ServerName&gt; servers)<a name="line.258"></a>
 <span class="sourceLineNo">259</span>    {<a name="line.259"></a>
-<span class="sourceLineNo">260</span>      return m_servers;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    }<a name="line.261"></a>
-<span class="sourceLineNo">262</span>    private List&lt;ServerName&gt; m_servers;<a name="line.262"></a>
-<span class="sourceLineNo">263</span>    public boolean getServers__IsNotDefault()<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      return m_servers__IsNotDefault;<a name="line.265"></a>
-<span class="sourceLineNo">266</span>    }<a name="line.266"></a>
-<span class="sourceLineNo">267</span>    private boolean m_servers__IsNotDefault;<a name="line.267"></a>
-<span class="sourceLineNo">268</span>  }<a name="line.268"></a>
-<span class="sourceLineNo">269</span>  @Override<a name="line.269"></a>
-<span class="sourceLineNo">270</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.270"></a>
-<span class="sourceLineNo">271</span>  {<a name="line.271"></a>
-<span class="sourceLineNo">272</span>    return new ImplData();<a name="line.272"></a>
-<span class="sourceLineNo">273</span>  }<a name="line.273"></a>
-<span class="sourceLineNo">274</span>  @Override public ImplData getImplData()<a name="line.274"></a>
-<span class="sourceLineNo">275</span>  {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>    return (ImplData) super.getImplData();<a name="line.276"></a>
-<span class="sourceLineNo">277</span>  }<a name="line.277"></a>
-<span class="sourceLineNo">278</span>  <a name="line.278"></a>
-<span class="sourceLineNo">279</span>  protected AssignmentManager assignmentManager;<a name="line.279"></a>
-<span class="sourceLineNo">280</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.280"></a>
+<span class="sourceLineNo">260</span>      // 23, 1<a name="line.260"></a>
+<span class="sourceLineNo">261</span>      m_servers = servers;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>      m_servers__IsNotDefault = true;<a name="line.262"></a>
+<span class="sourceLineNo">263</span>    }<a name="line.263"></a>
+<span class="sourceLineNo">264</span>    public List&lt;ServerName&gt; getServers()<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      return m_servers;<a name="line.266"></a>
+<span class="sourceLineNo">267</span>    }<a name="line.267"></a>
+<span class="sourceLineNo">268</span>    private List&lt;ServerName&gt; m_servers;<a name="line.268"></a>
+<span class="sourceLineNo">269</span>    public boolean getServers__IsNotDefault()<a name="line.269"></a>
+<span class="sourceLineNo">270</span>    {<a name="line.270"></a>
+<span class="sourceLineNo">271</span>      return m_servers__IsNotDefault;<a name="line.271"></a>
+<span class="sourceLineNo">272</span>    }<a name="line.272"></a>
+<span class="sourceLineNo">273</span>    private boolean m_servers__IsNotDefault;<a name="line.273"></a>
+<span class="sourceLineNo">274</span>  }<a name="line.274"></a>
+<span class="sourceLineNo">275</span>  @Override<a name="line.275"></a>
+<span class="sourceLineNo">276</span>  protected org.jamon.AbstractTemplateProxy.ImplData makeImplData()<a name="line.276"></a>
+<span class="sourceLineNo">277</span>  {<a name="line.277"></a>
+<span class="sourceLineNo">278</span>    return new ImplData();<a name="line.278"></a>
+<span class="sourceLineNo">279</span>  }<a name="line.279"></a>
+<span class="sourceLineNo">280</span>  @Override public ImplData getImplData()<a name="line.280"></a>
 <span class="sourceLineNo">281</span>  {<a name="line.281"></a>
-<span class="sourceLineNo">282</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.282"></a>
-<span class="sourceLineNo">283</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.286"></a>
-<span class="sourceLineNo">287</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.287"></a>
-<span class="sourceLineNo">288</span>  {<a name="line.288"></a>
-<span class="sourceLineNo">289</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.289"></a>
-<span class="sourceLineNo">290</span>    return this;<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>  protected Set&lt;ServerName&gt; deadServers;<a name="line.293"></a>
-<span class="sourceLineNo">294</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.294"></a>
-<span class="sourceLineNo">295</span>  {<a name="line.295"></a>
-<span class="sourceLineNo">296</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.296"></a>
-<span class="sourceLineNo">297</span>    return this;<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>  protected String filter;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  {<a name="line.302"></a>
-<span class="sourceLineNo">303</span>    (getImplData()).setFilter(p_filter);<a name="line.303"></a>
-<span class="sourceLineNo">304</span>    return this;<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>  protected String format;<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  {<a name="line.309"></a>
-<span class="sourceLineNo">310</span>    (getImplData()).setFormat(p_format);<a name="line.310"></a>
-<span class="sourceLineNo">311</span>    return this;<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>  protected Map&lt;String,Integer&gt; frags;<a name="line.314"></a>
-<span class="sourceLineNo">315</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  {<a name="line.316"></a>
-<span class="sourceLineNo">317</span>    (getImplData()).setFrags(p_frags);<a name="line.317"></a>
-<span class="sourceLineNo">318</span>    return this;<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>  protected ServerName metaLocation;<a name="line.321"></a>
-<span class="sourceLineNo">322</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.322"></a>
-<span class="sourceLineNo">323</span>  {<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.324"></a>
-<span class="sourceLineNo">325</span>    return this;<a name="line.325"></a>
-<span class="sourceLineNo">326</span>  }<a name="line.326"></a>
-<span class="sourceLineNo">327</span>  <a name="line.327"></a>
-<span class="sourceLineNo">328</span>  protected ServerManager serverManager;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  {<a name="line.330"></a>
-<span class="sourceLineNo">331</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.331"></a>
-<span class="sourceLineNo">332</span>    return this;<a name="line.332"></a>
-<span class="sourceLineNo">333</span>  }<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  <a name="line.334"></a>
-<span class="sourceLineNo">335</span>  protected List&lt;ServerName&gt; servers;<a name="line.335"></a>
-<span class="sourceLineNo">336</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  {<a name="line.337"></a>
-<span class="sourceLineNo">338</span>    (getImplData()).setServers(p_servers);<a name="line.338"></a>
-<span class="sourceLineNo">339</span>    return this;<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  }<a name="line.340"></a>
-<span class="sourceLineNo">341</span>  <a name="line.341"></a>
-<span class="sourceLineNo">342</span>  <a name="line.342"></a>
-<span class="sourceLineNo">343</span>  @Override<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.344"></a>
-<span class="sourceLineNo">345</span>    try<a name="line.345"></a>
-<span class="sourceLineNo">346</span>    {<a name="line.346"></a>
-<span class="sourceLineNo">347</span>      return p_class<a name="line.347"></a>
-<span class="sourceLineNo">348</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.348"></a>
-<span class="sourceLineNo">349</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.349"></a>
-<span class="sourceLineNo">350</span>    }<a name="line.350"></a>
-<span class="sourceLineNo">351</span>    catch (RuntimeException e)<a name="line.351"></a>
+<span class="sourceLineNo">282</span>    return (ImplData) super.getImplData();<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>  protected AssignmentManager assignmentManager;<a name="line.285"></a>
+<span class="sourceLineNo">286</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setAssignmentManager(AssignmentManager p_assignmentManager)<a name="line.286"></a>
+<span class="sourceLineNo">287</span>  {<a name="line.287"></a>
+<span class="sourceLineNo">288</span>    (getImplData()).setAssignmentManager(p_assignmentManager);<a name="line.288"></a>
+<span class="sourceLineNo">289</span>    return this;<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>  protected boolean catalogJanitorEnabled;<a name="line.292"></a>
+<span class="sourceLineNo">293</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setCatalogJanitorEnabled(boolean p_catalogJanitorEnabled)<a name="line.293"></a>
+<span class="sourceLineNo">294</span>  {<a name="line.294"></a>
+<span class="sourceLineNo">295</span>    (getImplData()).setCatalogJanitorEnabled(p_catalogJanitorEnabled);<a name="line.295"></a>
+<span class="sourceLineNo">296</span>    return this;<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  }<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  <a name="line.298"></a>
+<span class="sourceLineNo">299</span>  protected Set&lt;ServerName&gt; deadServers;<a name="line.299"></a>
+<span class="sourceLineNo">300</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setDeadServers(Set&lt;ServerName&gt; p_deadServers)<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  {<a name="line.301"></a>
+<span class="sourceLineNo">302</span>    (getImplData()).setDeadServers(p_deadServers);<a name="line.302"></a>
+<span class="sourceLineNo">303</span>    return this;<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>  protected String filter;<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFilter(String p_filter)<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  {<a name="line.308"></a>
+<span class="sourceLineNo">309</span>    (getImplData()).setFilter(p_filter);<a name="line.309"></a>
+<span class="sourceLineNo">310</span>    return this;<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>  protected String format;<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFormat(String p_format)<a name="line.314"></a>
+<span class="sourceLineNo">315</span>  {<a name="line.315"></a>
+<span class="sourceLineNo">316</span>    (getImplData()).setFormat(p_format);<a name="line.316"></a>
+<span class="sourceLineNo">317</span>    return this;<a name="line.317"></a>
+<span class="sourceLineNo">318</span>  }<a name="line.318"></a>
+<span class="sourceLineNo">319</span>  <a name="line.319"></a>
+<span class="sourceLineNo">320</span>  protected Map&lt;String,Integer&gt; frags;<a name="line.320"></a>
+<span class="sourceLineNo">321</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setFrags(Map&lt;String,Integer&gt; p_frags)<a name="line.321"></a>
+<span class="sourceLineNo">322</span>  {<a name="line.322"></a>
+<span class="sourceLineNo">323</span>    (getImplData()).setFrags(p_frags);<a name="line.323"></a>
+<span class="sourceLineNo">324</span>    return this;<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>  protected ServerName metaLocation;<a name="line.327"></a>
+<span class="sourceLineNo">328</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setMetaLocation(ServerName p_metaLocation)<a name="line.328"></a>
+<span class="sourceLineNo">329</span>  {<a name="line.329"></a>
+<span class="sourceLineNo">330</span>    (getImplData()).setMetaLocation(p_metaLocation);<a name="line.330"></a>
+<span class="sourceLineNo">331</span>    return this;<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>  protected ServerManager serverManager;<a name="line.334"></a>
+<span class="sourceLineNo">335</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServerManager(ServerManager p_serverManager)<a name="line.335"></a>
+<span class="sourceLineNo">336</span>  {<a name="line.336"></a>
+<span class="sourceLineNo">337</span>    (getImplData()).setServerManager(p_serverManager);<a name="line.337"></a>
+<span class="sourceLineNo">338</span>    return this;<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>  protected List&lt;ServerName&gt; servers;<a name="line.341"></a>
+<span class="sourceLineNo">342</span>  public final org.apache.hadoop.hbase.tmpl.master.MasterStatusTmpl setServers(List&lt;ServerName&gt; p_servers)<a name="line.342"></a>
+<span class="sourceLineNo">343</span>  {<a name="line.343"></a>
+<span class="sourceLineNo">344</span>    (getImplData()).setServers(p_servers);<a name="line.344"></a>
+<span class="sourceLineNo">345</span>    return this;<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>  @Override<a name="line.349"></a>
+<span class="sourceLineNo">350</span>  public org.jamon.AbstractTemplateImpl constructImpl(Class&lt;? extends org.jamon.AbstractTemplateImpl&gt; p_class){<a name="line.350"></a>
+<span class="sourceLineNo">351</span>    try<a name="line.351"></a>
 <span class="sourceLineNo">352</span>    {<a name="line.352"></a>
-<span class="sourceLineNo">353</span>      throw e;<a name="line.353"></a>
-<span class="sourceLineNo">354</span>    }<a name="line.354"></a>
-<span class="sourceLineNo">355</span>    catch (Exception e)<a name="line.355"></a>
-<span class="sourceLineNo">356</span>    {<a name="line.356"></a>
-<span class="sourceLineNo">357</span>      throw new RuntimeException(e);<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>  @Override<a name="line.361"></a>
-<span class="sourceLineNo">362</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.362"></a>
-<span class="sourceLineNo">363</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.363"></a>
-<span class="sourceLineNo">364</span>  }<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  {<a name="line.366"></a>
-<span class="sourceLineNo">367</span>    return new org.jamon.AbstractRenderer() {<a name="line.367"></a>
-<span class="sourceLineNo">368</span>      @Override<a name="line.368"></a>
-<span class="sourceLineNo">369</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.369"></a>
-<span class="sourceLineNo">370</span>        throws java.io.IOException<a name="line.370"></a>
-<span class="sourceLineNo">371</span>      {<a name="line.371"></a>
-<span class="sourceLineNo">372</span>        render(jamonWriter, master);<a name="line.372"></a>
-<span class="sourceLineNo">373</span>      }<a name="line.373"></a>
-<span class="sourceLineNo">374</span>    };<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  }<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  <a name="line.376"></a>
-<span class="sourceLineNo">377</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.377"></a>
-<span class="sourceLineNo">378</span>    throws java.io.IOException<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  {<a name="line.379"></a>
-<span class="sourceLineNo">380</span>    renderNoFlush(jamonWriter, master);<a name="line.380"></a>
-<span class="sourceLineNo">381</span>    jamonWriter.flush();<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  }<a name="line.382"></a>
-<span class="sourceLineNo">383</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
+<span class="sourceLineNo">353</span>      return p_class<a name="line.353"></a>
+<span class="sourceLineNo">354</span>        .getConstructor(new Class [] { org.jamon.TemplateManager.class, ImplData.class })<a name="line.354"></a>
+<span class="sourceLineNo">355</span>        .newInstance(new Object [] { getTemplateManager(), getImplData()});<a name="line.355"></a>
+<span class="sourceLineNo">356</span>    }<a name="line.356"></a>
+<span class="sourceLineNo">357</span>    catch (RuntimeException e)<a name="line.357"></a>
+<span class="sourceLineNo">358</span>    {<a name="line.358"></a>
+<span class="sourceLineNo">359</span>      throw e;<a name="line.359"></a>
+<span class="sourceLineNo">360</span>    }<a name="line.360"></a>
+<span class="sourceLineNo">361</span>    catch (Exception e)<a name="line.361"></a>
+<span class="sourceLineNo">362</span>    {<a name="line.362"></a>
+<span class="sourceLineNo">363</span>      throw new RuntimeException(e);<a name="line.363"></a>
+<span class="sourceLineNo">364</span>    }<a name="line.364"></a>
+<span class="sourceLineNo">365</span>  }<a name="line.365"></a>
+<span class="sourceLineNo">366</span>  <a name="line.366"></a>
+<span class="sourceLineNo">367</span>  @Override<a name="line.367"></a>
+<span class="sourceLineNo">368</span>  protected org.jamon.AbstractTemplateImpl constructImpl(){<a name="line.368"></a>
+<span class="sourceLineNo">369</span>    return new MasterStatusTmplImpl(getTemplateManager(), getImplData());<a name="line.369"></a>
+<span class="sourceLineNo">370</span>  }<a name="line.370"></a>
+<span class="sourceLineNo">371</span>  public org.jamon.Renderer makeRenderer(final HMaster master)<a name="line.371"></a>
+<span class="sourceLineNo">372</span>  {<a name="line.372"></a>
+<span class="sourceLineNo">373</span>    return new org.jamon.AbstractRenderer() {<a name="line.373"></a>
+<span class="sourceLineNo">374</span>      @Override<a name="line.374"></a>
+<span class="sourceLineNo">375</span>      public void renderTo(final java.io.Writer jamonWriter)<a name="line.375"></a>
+<span class="sourceLineNo">376</span>        throws java.io.IOException<a name="line.376"></a>
+<span class="sourceLineNo">377</span>      {<a name="line.377"></a>
+<span class="sourceLineNo">378</span>        render(jamonWriter, master);<a name="line.378"></a>
+<span class="sourceLineNo">379</span>      }<a name="line.379"></a>
+<span class="sourceLineNo">380</span>    };<a name="line.380"></a>
+<span class="sourceLineNo">381</span>  }<a name="line.381"></a>
+<span class="sourceLineNo">382</span>  <a name="line.382"></a>
+<span class="sourceLineNo">383</span>  public void render(final java.io.Writer jamonWriter, final HMaster master)<a name="line.383"></a>
 <span class="sourceLineNo">384</span>    throws java.io.IOException<a name="line.384"></a>
 <span class="sourceLineNo">385</span>  {<a name="line.385"></a>
-<span class="sourceLineNo">386</span>    ImplData implData = getImplData();<a name="line.386"></a>
-<span class="sourceLineNo">387</span>    implData.setMaster(master);<a name="line.387"></a>
-<span class="sourceLineNo">388</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.388"></a>
-<span class="sourceLineNo">389</span>    instance.renderNoFlush(jamonWriter);<a name="line.389"></a>
-<span class="sourceLineNo">390</span>    reset();<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>  <a name="line.393"></a>
-<span class="sourceLineNo">394</span>}<a name="line.394"></a>
+<span class="sourceLineNo">386</span>    renderNoFlush(jamonWriter, master);<a name="line.386"></a>
+<span class="sourceLineNo">387</span>    jamonWriter.flush();<a name="line.387"></a>
+<span class="sourceLineNo">388</span>  }<a name="line.388"></a>
+<span class="sourceLineNo">389</span>  public void renderNoFlush(final java.io.Writer jamonWriter, final HMaster master)<a name="line.389"></a>
+<span class="sourceLineNo">390</span>    throws java.io.IOException<a name="line.390"></a>
+<span class="sourceLineNo">391</span>  {<a name="line.391"></a>
+<span class="sourceLineNo">392</span>    ImplData implData = getImplData();<a name="line.392"></a>
+<span class="sourceLineNo">393</span>    implData.setMaster(master);<a name="line.393"></a>
+<span class="sourceLineNo">394</span>    Intf instance = (Intf) getTemplateManager().constructImpl(this);<a name="line.394"></a>
+<span class="sourceLineNo">395</span>    instance.renderNoFlush(jamonWriter);<a name="line.395"></a>
+<span class="sourceLineNo">396</span>    reset();<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>}<a name="line.400"></a>
 
 
 


[31/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
index fcb75c1..060db82 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html
@@ -18,7 +18,7 @@
     catch(err) {
     }
 //-->
-var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":9,"i8":10};
+var methods = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":9,"i9":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";
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.23">RegionServerListTmplImpl</a>
+<pre>public class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.29">RegionServerListTmplImpl</a>
 extends org.jamon.AbstractTemplateImpl
 implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.Intf.html" title="interface in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.Intf</a></pre>
 </li>
@@ -202,25 +202,29 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 </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/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__requestStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__replicationStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__replicationStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                   <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</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/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">__jamon_innerUnit__serverNameLink</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
-                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;serverLoad)</code>&nbsp;</td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__requestStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
 <tr id="i6" class="altColor">
 <td class="colFirst"><code>private void</code></td>
+<td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-">__jamon_innerUnit__serverNameLink</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</code>&nbsp;</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/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_innerUnit__storeStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">__jamon_innerUnit__storeStats</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                              <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
 </tr>
-<tr id="i7" class="rowColor">
+<tr id="i8" class="altColor">
 <td class="colFirst"><code>protected static <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a></code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#Z:Z__jamon_setOptionalArguments-org.apache.hadoop.hbase.tmpl.master.RegionServerListTmpl.ImplData-">__jamon_setOptionalArguments</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;p_implData)</code>&nbsp;</td>
 </tr>
-<tr id="i8" class="altColor">
+<tr id="i9" class="rowColor">
 <td class="colFirst"><code>void</code></td>
 <td class="colLast"><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#renderNoFlush-java.io.Writer-">renderNoFlush</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)</code>&nbsp;</td>
 </tr>
@@ -259,7 +263,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <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/tmpl/master/RegionServerListTmplImpl.html#line.28">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/tmpl/master/RegionServerListTmplImpl.html#line.34">master</a></pre>
 </li>
 </ul>
 <a name="servers">
@@ -268,7 +272,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>servers</h4>
-<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.29">servers</a></pre>
+<pre>private final&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.35">servers</a></pre>
 </li>
 </ul>
 </li>
@@ -285,7 +289,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>RegionServerListTmplImpl</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.38">RegionServerListTmplImpl</a>(org.jamon.TemplateManager&nbsp;p_templateManager,
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.44">RegionServerListTmplImpl</a>(org.jamon.TemplateManager&nbsp;p_templateManager,
                                 <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;p_implData)</pre>
 </li>
 </ul>
@@ -303,7 +307,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_setOptionalArguments</h4>
-<pre>protected static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.30">__jamon_setOptionalArguments</a>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;p_implData)</pre>
+<pre>protected static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.36">__jamon_setOptionalArguments</a>(<a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/RegionServerListTmpl.ImplData.html" title="class in org.apache.hadoop.hbase.tmpl.master">RegionServerListTmpl.ImplData</a>&nbsp;p_implData)</pre>
 </li>
 </ul>
 <a name="renderNoFlush-java.io.Writer-">
@@ -312,7 +316,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.45">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.51">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -328,7 +332,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__baseStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.102">__jamon_innerUnit__baseStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.115">__jamon_innerUnit__baseStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                           <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
                                    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>
@@ -343,7 +347,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__compactionStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.203">__jamon_innerUnit__compactionStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.216">__jamon_innerUnit__compactionStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
                                          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>
@@ -358,7 +362,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__emptyStat</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.273">__jamon_innerUnit__emptyStat</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.286">__jamon_innerUnit__emptyStat</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                           <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                    throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
@@ -373,7 +377,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__memoryStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.289">__jamon_innerUnit__memoryStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.302">__jamon_innerUnit__memoryStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                             <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
                                      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>
@@ -382,13 +386,28 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 </dl>
 </li>
 </ul>
+<a name="Z:Z__jamon_innerUnit__replicationStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">
+<!--   -->
+</a>
+<ul class="blockList">
+<li class="blockList">
+<h4>__jamon_innerUnit__replicationStats</h4>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.364">__jamon_innerUnit__replicationStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                                 <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
+                                          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>
+<dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></code></dd>
+</dl>
+</li>
+</ul>
 <a name="Z:Z__jamon_innerUnit__requestStats-java.io.Writer-org.apache.hadoop.hbase.ServerName:A-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__requestStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.351">__jamon_innerUnit__requestStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.470">__jamon_innerUnit__requestStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                              <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
                                       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>
@@ -397,15 +416,14 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 </dl>
 </li>
 </ul>
-<a name="Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-org.apache.hadoop.hbase.ServerMetrics-">
+<a name="Z:Z__jamon_innerUnit__serverNameLink-java.io.Writer-org.apache.hadoop.hbase.ServerName-">
 <!--   -->
 </a>
 <ul class="blockList">
 <li class="blockList">
 <h4>__jamon_innerUnit__serverNameLink</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.418">__jamon_innerUnit__serverNameLink</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
-                                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName,
-                                               <a href="../../../../../../org/apache/hadoop/hbase/ServerMetrics.html" title="interface in org.apache.hadoop.hbase">ServerMetrics</a>&nbsp;serverLoad)
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.537">__jamon_innerUnit__serverNameLink</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+                                               <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)
                                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>
@@ -419,7 +437,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/tmpl/master/Region
 <ul class="blockListLast">
 <li class="blockList">
 <h4>__jamon_innerUnit__storeStats</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.456">__jamon_innerUnit__storeStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/RegionServerListTmplImpl.html#line.575">__jamon_innerUnit__storeStats</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter,
                                            <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)
                                     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>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html b/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
index a486894..7e052da 100644
--- a/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
+++ b/devapidocs/org/apache/hadoop/hbase/util/class-use/Pair.html
@@ -1109,6 +1109,10 @@ Input/OutputFormats, a table indexing MapReduce job, and utility methods.</div>
 <div class="block">Get the servers which died since a given timestamp.</div>
 </td>
 </tr>
+<tr class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+</tr>
 </tbody>
 </table>
 <table class="useSummary" border="0" cellpadding="3" cellspacing="0" summary="Use table, listing methods, and an explanation">

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 e4eb01d..7c18202 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 = "9640ebacd464049be5c04f5c2fb33a73603e8c34";<a name="line.11"></a>
+<span class="sourceLineNo">011</span>  public static final String revision = "6a0c67344a86a98eaa56586524639fcf84ca1275";<a name="line.11"></a>
 <span class="sourceLineNo">012</span>  public static final String user = "jenkins";<a name="line.12"></a>
-<span class="sourceLineNo">013</span>  public static final String date = "Mon Jun 25 14:45:20 UTC 2018";<a name="line.13"></a>
+<span class="sourceLineNo">013</span>  public static final String date = "Tue Jun 26 15:33:09 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 = "681d99ec6dc50e27fd39f4329d2b58de";<a name="line.15"></a>
+<span class="sourceLineNo">015</span>  public static final String srcChecksum = "f666955a91aed9e585fcea26190b1410";<a name="line.15"></a>
 <span class="sourceLineNo">016</span>}<a name="line.16"></a>
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html
index b121cf9..79cb21b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.BlockIndexNotLoadedException.html
@@ -283,8 +283,8 @@
 <span class="sourceLineNo">275</span>              // next header, will not have happened...so, pass in the onDiskSize gotten from the<a name="line.275"></a>
 <span class="sourceLineNo">276</span>              // cached block. This 'optimization' triggers extremely rarely I'd say.<a name="line.276"></a>
 <span class="sourceLineNo">277</span>              long onDiskSize = prevBlock != null? prevBlock.getNextBlockOnDiskSize(): -1;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, true, false, false, false,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                  null, null);<a name="line.279"></a>
+<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, /*cacheBlock=*/true,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                  /*pread=*/true, false, false, null, null);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>              // Need not update the current block. Ideally here the readBlock won't find the<a name="line.280"></a>
 <span class="sourceLineNo">281</span>              // block in cache. We call this readBlock so that block data is read from FS and<a name="line.281"></a>
 <span class="sourceLineNo">282</span>              // cached in BC. So there is no reference count increment that happens here.<a name="line.282"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html
index b121cf9..79cb21b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.EncodedScanner.html
@@ -283,8 +283,8 @@
 <span class="sourceLineNo">275</span>              // next header, will not have happened...so, pass in the onDiskSize gotten from the<a name="line.275"></a>
 <span class="sourceLineNo">276</span>              // cached block. This 'optimization' triggers extremely rarely I'd say.<a name="line.276"></a>
 <span class="sourceLineNo">277</span>              long onDiskSize = prevBlock != null? prevBlock.getNextBlockOnDiskSize(): -1;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, true, false, false, false,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                  null, null);<a name="line.279"></a>
+<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, /*cacheBlock=*/true,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                  /*pread=*/true, false, false, null, null);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>              // Need not update the current block. Ideally here the readBlock won't find the<a name="line.280"></a>
 <span class="sourceLineNo">281</span>              // block in cache. We call this readBlock so that block data is read from FS and<a name="line.281"></a>
 <span class="sourceLineNo">282</span>              // cached in BC. So there is no reference count increment that happens here.<a name="line.282"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html
index b121cf9..79cb21b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.HFileScannerImpl.html
@@ -283,8 +283,8 @@
 <span class="sourceLineNo">275</span>              // next header, will not have happened...so, pass in the onDiskSize gotten from the<a name="line.275"></a>
 <span class="sourceLineNo">276</span>              // cached block. This 'optimization' triggers extremely rarely I'd say.<a name="line.276"></a>
 <span class="sourceLineNo">277</span>              long onDiskSize = prevBlock != null? prevBlock.getNextBlockOnDiskSize(): -1;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, true, false, false, false,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                  null, null);<a name="line.279"></a>
+<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, /*cacheBlock=*/true,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                  /*pread=*/true, false, false, null, null);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>              // Need not update the current block. Ideally here the readBlock won't find the<a name="line.280"></a>
 <span class="sourceLineNo">281</span>              // block in cache. We call this readBlock so that block data is read from FS and<a name="line.281"></a>
 <span class="sourceLineNo">282</span>              // cached in BC. So there is no reference count increment that happens here.<a name="line.282"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.NotSeekedException.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.NotSeekedException.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.NotSeekedException.html
index b121cf9..79cb21b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.NotSeekedException.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.NotSeekedException.html
@@ -283,8 +283,8 @@
 <span class="sourceLineNo">275</span>              // next header, will not have happened...so, pass in the onDiskSize gotten from the<a name="line.275"></a>
 <span class="sourceLineNo">276</span>              // cached block. This 'optimization' triggers extremely rarely I'd say.<a name="line.276"></a>
 <span class="sourceLineNo">277</span>              long onDiskSize = prevBlock != null? prevBlock.getNextBlockOnDiskSize(): -1;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, true, false, false, false,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                  null, null);<a name="line.279"></a>
+<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, /*cacheBlock=*/true,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                  /*pread=*/true, false, false, null, null);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>              // Need not update the current block. Ideally here the readBlock won't find the<a name="line.280"></a>
 <span class="sourceLineNo">281</span>              // block in cache. We call this readBlock so that block data is read from FS and<a name="line.281"></a>
 <span class="sourceLineNo">282</span>              // cached in BC. So there is no reference count increment that happens here.<a name="line.282"></a>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
index b121cf9..79cb21b 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/io/hfile/HFileReaderImpl.html
@@ -283,8 +283,8 @@
 <span class="sourceLineNo">275</span>              // next header, will not have happened...so, pass in the onDiskSize gotten from the<a name="line.275"></a>
 <span class="sourceLineNo">276</span>              // cached block. This 'optimization' triggers extremely rarely I'd say.<a name="line.276"></a>
 <span class="sourceLineNo">277</span>              long onDiskSize = prevBlock != null? prevBlock.getNextBlockOnDiskSize(): -1;<a name="line.277"></a>
-<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, true, false, false, false,<a name="line.278"></a>
-<span class="sourceLineNo">279</span>                  null, null);<a name="line.279"></a>
+<span class="sourceLineNo">278</span>              HFileBlock block = readBlock(offset, onDiskSize, /*cacheBlock=*/true,<a name="line.278"></a>
+<span class="sourceLineNo">279</span>                  /*pread=*/true, false, false, null, null);<a name="line.279"></a>
 <span class="sourceLineNo">280</span>              // Need not update the current block. Ideally here the readBlock won't find the<a name="line.280"></a>
 <span class="sourceLineNo">281</span>              // block in cache. We call this readBlock so that block data is read from FS and<a name="line.281"></a>
 <span class="sourceLineNo">282</span>              // cached in BC. So there is no reference count increment that happens here.<a name="line.282"></a>


[22/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
index 546d2b6..3b8b827 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/master/HMaster.TableDescriptorGetter.html
@@ -180,3553 +180,3580 @@
 <span class="sourceLineNo">172</span>import org.apache.hadoop.hbase.regionserver.compactions.ExploringCompactionPolicy;<a name="line.172"></a>
 <span class="sourceLineNo">173</span>import org.apache.hadoop.hbase.regionserver.compactions.FIFOCompactionPolicy;<a name="line.173"></a>
 <span class="sourceLineNo">174</span>import org.apache.hadoop.hbase.replication.ReplicationException;<a name="line.174"></a>
-<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.175"></a>
-<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.176"></a>
-<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.177"></a>
-<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.178"></a>
-<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.179"></a>
-<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.180"></a>
-<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.181"></a>
-<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.182"></a>
-<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.183"></a>
-<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.184"></a>
-<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.185"></a>
-<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.186"></a>
-<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.187"></a>
-<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.188"></a>
-<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.189"></a>
-<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.190"></a>
-<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.191"></a>
-<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.192"></a>
-<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.193"></a>
-<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.194"></a>
-<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.195"></a>
-<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.196"></a>
-<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.197"></a>
-<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.198"></a>
-<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.199"></a>
-<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.200"></a>
-<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.201"></a>
-<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.202"></a>
-<span class="sourceLineNo">203</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.203"></a>
-<span class="sourceLineNo">204</span>import org.apache.zookeeper.KeeperException;<a name="line.204"></a>
-<span class="sourceLineNo">205</span>import org.eclipse.jetty.server.Server;<a name="line.205"></a>
-<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.206"></a>
-<span class="sourceLineNo">207</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.207"></a>
-<span class="sourceLineNo">208</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.208"></a>
-<span class="sourceLineNo">209</span>import org.slf4j.Logger;<a name="line.209"></a>
-<span class="sourceLineNo">210</span>import org.slf4j.LoggerFactory;<a name="line.210"></a>
-<span class="sourceLineNo">211</span><a name="line.211"></a>
-<span class="sourceLineNo">212</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.212"></a>
-<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.213"></a>
-<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.214"></a>
-<span class="sourceLineNo">215</span><a name="line.215"></a>
-<span class="sourceLineNo">216</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.216"></a>
-<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.217"></a>
-<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.218"></a>
-<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.219"></a>
-<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.220"></a>
-<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.224"></a>
-<span class="sourceLineNo">225</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.225"></a>
-<span class="sourceLineNo">226</span> * run the cluster.  All others park themselves in their constructor until<a name="line.226"></a>
-<span class="sourceLineNo">227</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.227"></a>
-<span class="sourceLineNo">228</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.228"></a>
-<span class="sourceLineNo">229</span> *<a name="line.229"></a>
-<span class="sourceLineNo">230</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.230"></a>
-<span class="sourceLineNo">231</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.231"></a>
-<span class="sourceLineNo">232</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.232"></a>
-<span class="sourceLineNo">233</span> *<a name="line.233"></a>
-<span class="sourceLineNo">234</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.234"></a>
-<span class="sourceLineNo">235</span> *<a name="line.235"></a>
-<span class="sourceLineNo">236</span> * @see org.apache.zookeeper.Watcher<a name="line.236"></a>
-<span class="sourceLineNo">237</span> */<a name="line.237"></a>
-<span class="sourceLineNo">238</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.238"></a>
-<span class="sourceLineNo">239</span>@SuppressWarnings("deprecation")<a name="line.239"></a>
-<span class="sourceLineNo">240</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.240"></a>
-<span class="sourceLineNo">241</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<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>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.244"></a>
-<span class="sourceLineNo">245</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.245"></a>
-<span class="sourceLineNo">246</span>   */<a name="line.246"></a>
-<span class="sourceLineNo">247</span>  private static class InitializationMonitor extends HasThread {<a name="line.247"></a>
-<span class="sourceLineNo">248</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.248"></a>
-<span class="sourceLineNo">249</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.249"></a>
-<span class="sourceLineNo">250</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.253"></a>
-<span class="sourceLineNo">254</span>     * true, do nothing otherwise.<a name="line.254"></a>
-<span class="sourceLineNo">255</span>     */<a name="line.255"></a>
-<span class="sourceLineNo">256</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.256"></a>
-<span class="sourceLineNo">257</span>    public static final boolean HALT_DEFAULT = false;<a name="line.257"></a>
-<span class="sourceLineNo">258</span><a name="line.258"></a>
-<span class="sourceLineNo">259</span>    private final HMaster master;<a name="line.259"></a>
-<span class="sourceLineNo">260</span>    private final long timeout;<a name="line.260"></a>
-<span class="sourceLineNo">261</span>    private final boolean haltOnTimeout;<a name="line.261"></a>
-<span class="sourceLineNo">262</span><a name="line.262"></a>
-<span class="sourceLineNo">263</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.263"></a>
-<span class="sourceLineNo">264</span>    InitializationMonitor(HMaster master) {<a name="line.264"></a>
-<span class="sourceLineNo">265</span>      super("MasterInitializationMonitor");<a name="line.265"></a>
-<span class="sourceLineNo">266</span>      this.master = master;<a name="line.266"></a>
-<span class="sourceLineNo">267</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.267"></a>
-<span class="sourceLineNo">268</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.268"></a>
-<span class="sourceLineNo">269</span>      this.setDaemon(true);<a name="line.269"></a>
-<span class="sourceLineNo">270</span>    }<a name="line.270"></a>
-<span class="sourceLineNo">271</span><a name="line.271"></a>
-<span class="sourceLineNo">272</span>    @Override<a name="line.272"></a>
-<span class="sourceLineNo">273</span>    public void run() {<a name="line.273"></a>
-<span class="sourceLineNo">274</span>      try {<a name="line.274"></a>
-<span class="sourceLineNo">275</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.275"></a>
-<span class="sourceLineNo">276</span>          Thread.sleep(timeout);<a name="line.276"></a>
-<span class="sourceLineNo">277</span>          if (master.isInitialized()) {<a name="line.277"></a>
-<span class="sourceLineNo">278</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.278"></a>
-<span class="sourceLineNo">279</span>          } else {<a name="line.279"></a>
-<span class="sourceLineNo">280</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.280"></a>
-<span class="sourceLineNo">281</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.281"></a>
-<span class="sourceLineNo">282</span>            if (haltOnTimeout) {<a name="line.282"></a>
-<span class="sourceLineNo">283</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.283"></a>
-<span class="sourceLineNo">284</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.284"></a>
-<span class="sourceLineNo">285</span>              System.exit(-1);<a name="line.285"></a>
-<span class="sourceLineNo">286</span>            }<a name="line.286"></a>
-<span class="sourceLineNo">287</span>          }<a name="line.287"></a>
-<span class="sourceLineNo">288</span>        }<a name="line.288"></a>
-<span class="sourceLineNo">289</span>      } catch (InterruptedException ie) {<a name="line.289"></a>
-<span class="sourceLineNo">290</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<a name="line.290"></a>
-<span class="sourceLineNo">291</span>      }<a name="line.291"></a>
-<span class="sourceLineNo">292</span>    }<a name="line.292"></a>
-<span class="sourceLineNo">293</span>  }<a name="line.293"></a>
-<span class="sourceLineNo">294</span><a name="line.294"></a>
-<span class="sourceLineNo">295</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.295"></a>
-<span class="sourceLineNo">296</span>  //instance into web context.<a name="line.296"></a>
-<span class="sourceLineNo">297</span>  public static final String MASTER = "master";<a name="line.297"></a>
-<span class="sourceLineNo">298</span><a name="line.298"></a>
-<span class="sourceLineNo">299</span>  // Manager and zk listener for master election<a name="line.299"></a>
-<span class="sourceLineNo">300</span>  private final ActiveMasterManager activeMasterManager;<a name="line.300"></a>
-<span class="sourceLineNo">301</span>  // Region server tracker<a name="line.301"></a>
-<span class="sourceLineNo">302</span>  private RegionServerTracker regionServerTracker;<a name="line.302"></a>
-<span class="sourceLineNo">303</span>  // Draining region server tracker<a name="line.303"></a>
-<span class="sourceLineNo">304</span>  private DrainingServerTracker drainingServerTracker;<a name="line.304"></a>
-<span class="sourceLineNo">305</span>  // Tracker for load balancer state<a name="line.305"></a>
-<span class="sourceLineNo">306</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.306"></a>
-<span class="sourceLineNo">307</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.307"></a>
-<span class="sourceLineNo">308</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.308"></a>
-<span class="sourceLineNo">309</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.309"></a>
-<span class="sourceLineNo">310</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.310"></a>
-<span class="sourceLineNo">311</span><a name="line.311"></a>
-<span class="sourceLineNo">312</span>  // Tracker for split and merge state<a name="line.312"></a>
-<span class="sourceLineNo">313</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.313"></a>
-<span class="sourceLineNo">314</span><a name="line.314"></a>
-<span class="sourceLineNo">315</span>  // Tracker for region normalizer state<a name="line.315"></a>
-<span class="sourceLineNo">316</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.316"></a>
-<span class="sourceLineNo">317</span><a name="line.317"></a>
-<span class="sourceLineNo">318</span>  //Tracker for master maintenance mode setting<a name="line.318"></a>
-<span class="sourceLineNo">319</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.319"></a>
-<span class="sourceLineNo">320</span><a name="line.320"></a>
-<span class="sourceLineNo">321</span>  private ClusterSchemaService clusterSchemaService;<a name="line.321"></a>
-<span class="sourceLineNo">322</span><a name="line.322"></a>
-<span class="sourceLineNo">323</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.323"></a>
-<span class="sourceLineNo">324</span>    "hbase.master.wait.on.service.seconds";<a name="line.324"></a>
-<span class="sourceLineNo">325</span>  public static final int DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS = 5 * 60;<a name="line.325"></a>
-<span class="sourceLineNo">326</span><a name="line.326"></a>
-<span class="sourceLineNo">327</span>  // Metrics for the HMaster<a name="line.327"></a>
-<span class="sourceLineNo">328</span>  final MetricsMaster metricsMaster;<a name="line.328"></a>
-<span class="sourceLineNo">329</span>  // file system manager for the master FS operations<a name="line.329"></a>
-<span class="sourceLineNo">330</span>  private MasterFileSystem fileSystemManager;<a name="line.330"></a>
-<span class="sourceLineNo">331</span>  private MasterWalManager walManager;<a name="line.331"></a>
-<span class="sourceLineNo">332</span><a name="line.332"></a>
-<span class="sourceLineNo">333</span>  // server manager to deal with region server info<a name="line.333"></a>
-<span class="sourceLineNo">334</span>  private volatile ServerManager serverManager;<a name="line.334"></a>
-<span class="sourceLineNo">335</span><a name="line.335"></a>
-<span class="sourceLineNo">336</span>  // manager of assignment nodes in zookeeper<a name="line.336"></a>
-<span class="sourceLineNo">337</span>  private AssignmentManager assignmentManager;<a name="line.337"></a>
-<span class="sourceLineNo">338</span><a name="line.338"></a>
-<span class="sourceLineNo">339</span>  // manager of replication<a name="line.339"></a>
-<span class="sourceLineNo">340</span>  private ReplicationPeerManager replicationPeerManager;<a name="line.340"></a>
-<span class="sourceLineNo">341</span><a name="line.341"></a>
-<span class="sourceLineNo">342</span>  // buffer for "fatal error" notices from region servers<a name="line.342"></a>
-<span class="sourceLineNo">343</span>  // in the cluster. This is only used for assisting<a name="line.343"></a>
-<span class="sourceLineNo">344</span>  // operations/debugging.<a name="line.344"></a>
-<span class="sourceLineNo">345</span>  MemoryBoundedLogMessageBuffer rsFatals;<a name="line.345"></a>
-<span class="sourceLineNo">346</span><a name="line.346"></a>
-<span class="sourceLineNo">347</span>  // flag set after we become the active master (used for testing)<a name="line.347"></a>
-<span class="sourceLineNo">348</span>  private volatile boolean activeMaster = false;<a name="line.348"></a>
-<span class="sourceLineNo">349</span><a name="line.349"></a>
-<span class="sourceLineNo">350</span>  // flag set after we complete initialization once active<a name="line.350"></a>
-<span class="sourceLineNo">351</span>  private final ProcedureEvent&lt;?&gt; initialized = new ProcedureEvent&lt;&gt;("master initialized");<a name="line.351"></a>
-<span class="sourceLineNo">352</span><a name="line.352"></a>
-<span class="sourceLineNo">353</span>  // flag set after master services are started,<a name="line.353"></a>
-<span class="sourceLineNo">354</span>  // initialization may have not completed yet.<a name="line.354"></a>
-<span class="sourceLineNo">355</span>  volatile boolean serviceStarted = false;<a name="line.355"></a>
-<span class="sourceLineNo">356</span><a name="line.356"></a>
-<span class="sourceLineNo">357</span>  // Maximum time we should run balancer for<a name="line.357"></a>
-<span class="sourceLineNo">358</span>  private final int maxBlancingTime;<a name="line.358"></a>
-<span class="sourceLineNo">359</span>  // Maximum percent of regions in transition when balancing<a name="line.359"></a>
-<span class="sourceLineNo">360</span>  private final double maxRitPercent;<a name="line.360"></a>
-<span class="sourceLineNo">361</span><a name="line.361"></a>
-<span class="sourceLineNo">362</span>  private final LockManager lockManager = new LockManager(this);<a name="line.362"></a>
-<span class="sourceLineNo">363</span><a name="line.363"></a>
-<span class="sourceLineNo">364</span>  private LoadBalancer balancer;<a name="line.364"></a>
-<span class="sourceLineNo">365</span>  private RegionNormalizer normalizer;<a name="line.365"></a>
-<span class="sourceLineNo">366</span>  private BalancerChore balancerChore;<a name="line.366"></a>
-<span class="sourceLineNo">367</span>  private RegionNormalizerChore normalizerChore;<a name="line.367"></a>
-<span class="sourceLineNo">368</span>  private ClusterStatusChore clusterStatusChore;<a name="line.368"></a>
-<span class="sourceLineNo">369</span>  private ClusterStatusPublisher clusterStatusPublisherChore = null;<a name="line.369"></a>
-<span class="sourceLineNo">370</span><a name="line.370"></a>
-<span class="sourceLineNo">371</span>  CatalogJanitor catalogJanitorChore;<a name="line.371"></a>
-<span class="sourceLineNo">372</span>  private LogCleaner logCleaner;<a name="line.372"></a>
-<span class="sourceLineNo">373</span>  private HFileCleaner hfileCleaner;<a name="line.373"></a>
-<span class="sourceLineNo">374</span>  private ReplicationBarrierCleaner replicationBarrierCleaner;<a name="line.374"></a>
-<span class="sourceLineNo">375</span>  private ExpiredMobFileCleanerChore expiredMobFileCleanerChore;<a name="line.375"></a>
-<span class="sourceLineNo">376</span>  private MobCompactionChore mobCompactChore;<a name="line.376"></a>
-<span class="sourceLineNo">377</span>  private MasterMobCompactionThread mobCompactThread;<a name="line.377"></a>
-<span class="sourceLineNo">378</span>  // used to synchronize the mobCompactionStates<a name="line.378"></a>
-<span class="sourceLineNo">379</span>  private final IdLock mobCompactionLock = new IdLock();<a name="line.379"></a>
-<span class="sourceLineNo">380</span>  // save the information of mob compactions in tables.<a name="line.380"></a>
-<span class="sourceLineNo">381</span>  // the key is table name, the value is the number of compactions in that table.<a name="line.381"></a>
-<span class="sourceLineNo">382</span>  private Map&lt;TableName, AtomicInteger&gt; mobCompactionStates = Maps.newConcurrentMap();<a name="line.382"></a>
-<span class="sourceLineNo">383</span><a name="line.383"></a>
-<span class="sourceLineNo">384</span>  MasterCoprocessorHost cpHost;<a name="line.384"></a>
-<span class="sourceLineNo">385</span><a name="line.385"></a>
-<span class="sourceLineNo">386</span>  private final boolean preLoadTableDescriptors;<a name="line.386"></a>
-<span class="sourceLineNo">387</span><a name="line.387"></a>
-<span class="sourceLineNo">388</span>  // Time stamps for when a hmaster became active<a name="line.388"></a>
-<span class="sourceLineNo">389</span>  private long masterActiveTime;<a name="line.389"></a>
-<span class="sourceLineNo">390</span><a name="line.390"></a>
-<span class="sourceLineNo">391</span>  // Time stamp for when HMaster finishes becoming Active Master<a name="line.391"></a>
-<span class="sourceLineNo">392</span>  private long masterFinishedInitializationTime;<a name="line.392"></a>
-<span class="sourceLineNo">393</span><a name="line.393"></a>
-<span class="sourceLineNo">394</span>  //should we check the compression codec type at master side, default true, HBASE-6370<a name="line.394"></a>
-<span class="sourceLineNo">395</span>  private final boolean masterCheckCompression;<a name="line.395"></a>
-<span class="sourceLineNo">396</span><a name="line.396"></a>
-<span class="sourceLineNo">397</span>  //should we check encryption settings at master side, default true<a name="line.397"></a>
-<span class="sourceLineNo">398</span>  private final boolean masterCheckEncryption;<a name="line.398"></a>
-<span class="sourceLineNo">399</span><a name="line.399"></a>
-<span class="sourceLineNo">400</span>  Map&lt;String, Service&gt; coprocessorServiceHandlers = Maps.newHashMap();<a name="line.400"></a>
-<span class="sourceLineNo">401</span><a name="line.401"></a>
-<span class="sourceLineNo">402</span>  // monitor for snapshot of hbase tables<a name="line.402"></a>
-<span class="sourceLineNo">403</span>  SnapshotManager snapshotManager;<a name="line.403"></a>
-<span class="sourceLineNo">404</span>  // monitor for distributed procedures<a name="line.404"></a>
-<span class="sourceLineNo">405</span>  private MasterProcedureManagerHost mpmHost;<a name="line.405"></a>
-<span class="sourceLineNo">406</span><a name="line.406"></a>
-<span class="sourceLineNo">407</span>  // it is assigned after 'initialized' guard set to true, so should be volatile<a name="line.407"></a>
-<span class="sourceLineNo">408</span>  private volatile MasterQuotaManager quotaManager;<a name="line.408"></a>
-<span class="sourceLineNo">409</span>  private SpaceQuotaSnapshotNotifier spaceQuotaSnapshotNotifier;<a name="line.409"></a>
-<span class="sourceLineNo">410</span>  private QuotaObserverChore quotaObserverChore;<a name="line.410"></a>
-<span class="sourceLineNo">411</span>  private SnapshotQuotaObserverChore snapshotQuotaChore;<a name="line.411"></a>
-<span class="sourceLineNo">412</span><a name="line.412"></a>
-<span class="sourceLineNo">413</span>  private ProcedureExecutor&lt;MasterProcedureEnv&gt; procedureExecutor;<a name="line.413"></a>
-<span class="sourceLineNo">414</span>  private WALProcedureStore procedureStore;<a name="line.414"></a>
-<span class="sourceLineNo">415</span><a name="line.415"></a>
-<span class="sourceLineNo">416</span>  // handle table states<a name="line.416"></a>
-<span class="sourceLineNo">417</span>  private TableStateManager tableStateManager;<a name="line.417"></a>
-<span class="sourceLineNo">418</span><a name="line.418"></a>
-<span class="sourceLineNo">419</span>  private long splitPlanCount;<a name="line.419"></a>
-<span class="sourceLineNo">420</span>  private long mergePlanCount;<a name="line.420"></a>
-<span class="sourceLineNo">421</span><a name="line.421"></a>
-<span class="sourceLineNo">422</span>  /* Handle favored nodes information */<a name="line.422"></a>
-<span class="sourceLineNo">423</span>  private FavoredNodesManager favoredNodesManager;<a name="line.423"></a>
-<span class="sourceLineNo">424</span><a name="line.424"></a>
-<span class="sourceLineNo">425</span>  /** jetty server for master to redirect requests to regionserver infoServer */<a name="line.425"></a>
-<span class="sourceLineNo">426</span>  private Server masterJettyServer;<a name="line.426"></a>
-<span class="sourceLineNo">427</span><a name="line.427"></a>
-<span class="sourceLineNo">428</span>  public static class RedirectServlet extends HttpServlet {<a name="line.428"></a>
-<span class="sourceLineNo">429</span>    private static final long serialVersionUID = 2894774810058302473L;<a name="line.429"></a>
-<span class="sourceLineNo">430</span>    private final int regionServerInfoPort;<a name="line.430"></a>
-<span class="sourceLineNo">431</span>    private final String regionServerHostname;<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>     * @param infoServer that we're trying to send all requests to<a name="line.434"></a>
-<span class="sourceLineNo">435</span>     * @param hostname may be null. if given, will be used for redirects instead of host from client.<a name="line.435"></a>
-<span class="sourceLineNo">436</span>     */<a name="line.436"></a>
-<span class="sourceLineNo">437</span>    public RedirectServlet(InfoServer infoServer, String hostname) {<a name="line.437"></a>
-<span class="sourceLineNo">438</span>       regionServerInfoPort = infoServer.getPort();<a name="line.438"></a>
-<span class="sourceLineNo">439</span>       regionServerHostname = hostname;<a name="line.439"></a>
-<span class="sourceLineNo">440</span>    }<a name="line.440"></a>
-<span class="sourceLineNo">441</span><a name="line.441"></a>
-<span class="sourceLineNo">442</span>    @Override<a name="line.442"></a>
-<span class="sourceLineNo">443</span>    public void doGet(HttpServletRequest request,<a name="line.443"></a>
-<span class="sourceLineNo">444</span>        HttpServletResponse response) throws ServletException, IOException {<a name="line.444"></a>
-<span class="sourceLineNo">445</span>      String redirectHost = regionServerHostname;<a name="line.445"></a>
-<span class="sourceLineNo">446</span>      if(redirectHost == null) {<a name="line.446"></a>
-<span class="sourceLineNo">447</span>        redirectHost = request.getServerName();<a name="line.447"></a>
-<span class="sourceLineNo">448</span>        if(!Addressing.isLocalAddress(InetAddress.getByName(redirectHost))) {<a name="line.448"></a>
-<span class="sourceLineNo">449</span>          LOG.warn("Couldn't resolve '" + redirectHost + "' as an address local to this node and '" +<a name="line.449"></a>
-<span class="sourceLineNo">450</span>              MASTER_HOSTNAME_KEY + "' is not set; client will get a HTTP 400 response. If " +<a name="line.450"></a>
-<span class="sourceLineNo">451</span>              "your HBase deployment relies on client accessible names that the region server process " +<a name="line.451"></a>
-<span class="sourceLineNo">452</span>              "can't resolve locally, then you should set the previously mentioned configuration variable " +<a name="line.452"></a>
-<span class="sourceLineNo">453</span>              "to an appropriate hostname.");<a name="line.453"></a>
-<span class="sourceLineNo">454</span>          // no sending client provided input back to the client, so the goal host is just in the logs.<a name="line.454"></a>
-<span class="sourceLineNo">455</span>          response.sendError(400, "Request was to a host that I can't resolve for any of the network interfaces on " +<a name="line.455"></a>
-<span class="sourceLineNo">456</span>              "this node. If this is due to an intermediary such as an HTTP load balancer or other proxy, your HBase " +<a name="line.456"></a>
-<span class="sourceLineNo">457</span>              "administrator can set '" + MASTER_HOSTNAME_KEY + "' to point to the correct hostname.");<a name="line.457"></a>
-<span class="sourceLineNo">458</span>          return;<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>      // TODO this scheme should come from looking at the scheme registered in the infoserver's http server for the<a name="line.461"></a>
-<span class="sourceLineNo">462</span>      // host and port we're using, but it's buried way too deep to do that ATM.<a name="line.462"></a>
-<span class="sourceLineNo">463</span>      String redirectUrl = request.getScheme() + "://"<a name="line.463"></a>
-<span class="sourceLineNo">464</span>        + redirectHost + ":" + regionServerInfoPort<a name="line.464"></a>
-<span class="sourceLineNo">465</span>        + request.getRequestURI();<a name="line.465"></a>
-<span class="sourceLineNo">466</span>      response.sendRedirect(redirectUrl);<a name="line.466"></a>
-<span class="sourceLineNo">467</span>    }<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>   * Initializes the HMaster. The steps are as follows:<a name="line.471"></a>
-<span class="sourceLineNo">472</span>   * &lt;p&gt;<a name="line.472"></a>
-<span class="sourceLineNo">473</span>   * &lt;ol&gt;<a name="line.473"></a>
-<span class="sourceLineNo">474</span>   * &lt;li&gt;Initialize the local HRegionServer<a name="line.474"></a>
-<span class="sourceLineNo">475</span>   * &lt;li&gt;Start the ActiveMasterManager.<a name="line.475"></a>
-<span class="sourceLineNo">476</span>   * &lt;/ol&gt;<a name="line.476"></a>
-<span class="sourceLineNo">477</span>   * &lt;p&gt;<a name="line.477"></a>
-<span class="sourceLineNo">478</span>   * Remaining steps of initialization occur in<a name="line.478"></a>
-<span class="sourceLineNo">479</span>   * #finishActiveMasterInitialization(MonitoredTask) after<a name="line.479"></a>
-<span class="sourceLineNo">480</span>   * the master becomes the active one.<a name="line.480"></a>
-<span class="sourceLineNo">481</span>   */<a name="line.481"></a>
-<span class="sourceLineNo">482</span>  public HMaster(final Configuration conf)<a name="line.482"></a>
-<span class="sourceLineNo">483</span>      throws IOException, KeeperException {<a name="line.483"></a>
-<span class="sourceLineNo">484</span>    super(conf);<a name="line.484"></a>
-<span class="sourceLineNo">485</span>    TraceUtil.initTracer(conf);<a name="line.485"></a>
-<span class="sourceLineNo">486</span>    try {<a name="line.486"></a>
-<span class="sourceLineNo">487</span>      this.rsFatals = new MemoryBoundedLogMessageBuffer(<a name="line.487"></a>
-<span class="sourceLineNo">488</span>          conf.getLong("hbase.master.buffer.for.rs.fatals", 1 * 1024 * 1024));<a name="line.488"></a>
-<span class="sourceLineNo">489</span>      LOG.info("hbase.rootdir=" + getRootDir() +<a name="line.489"></a>
-<span class="sourceLineNo">490</span>          ", hbase.cluster.distributed=" + this.conf.getBoolean(HConstants.CLUSTER_DISTRIBUTED, false));<a name="line.490"></a>
-<span class="sourceLineNo">491</span><a name="line.491"></a>
-<span class="sourceLineNo">492</span>      // Disable usage of meta replicas in the master<a name="line.492"></a>
-<span class="sourceLineNo">493</span>      this.conf.setBoolean(HConstants.USE_META_REPLICAS, false);<a name="line.493"></a>
-<span class="sourceLineNo">494</span><a name="line.494"></a>
-<span class="sourceLineNo">495</span>      decorateMasterConfiguration(this.conf);<a name="line.495"></a>
-<span class="sourceLineNo">496</span><a name="line.496"></a>
-<span class="sourceLineNo">497</span>      // Hack! Maps DFSClient =&gt; Master for logs.  HDFS made this<a name="line.497"></a>
-<span class="sourceLineNo">498</span>      // config param for task trackers, but we can piggyback off of it.<a name="line.498"></a>
-<span class="sourceLineNo">499</span>      if (this.conf.get("mapreduce.task.attempt.id") == null) {<a name="line.499"></a>
-<span class="sourceLineNo">500</span>        this.conf.set("mapreduce.task.attempt.id", "hb_m_" + this.serverName.toString());<a name="line.500"></a>
-<span class="sourceLineNo">501</span>      }<a name="line.501"></a>
-<span class="sourceLineNo">502</span><a name="line.502"></a>
-<span class="sourceLineNo">503</span>      // should we check the compression codec type at master side, default true, HBASE-6370<a name="line.503"></a>
-<span class="sourceLineNo">504</span>      this.masterCheckCompression = conf.getBoolean("hbase.master.check.compression", true);<a name="line.504"></a>
-<span class="sourceLineNo">505</span><a name="line.505"></a>
-<span class="sourceLineNo">506</span>      // should we check encryption settings at master side, default true<a name="line.506"></a>
-<span class="sourceLineNo">507</span>      this.masterCheckEncryption = conf.getBoolean("hbase.master.check.encryption", true);<a name="line.507"></a>
-<span class="sourceLineNo">508</span><a name="line.508"></a>
-<span class="sourceLineNo">509</span>      this.metricsMaster = new MetricsMaster(new MetricsMasterWrapperImpl(this));<a name="line.509"></a>
-<span class="sourceLineNo">510</span><a name="line.510"></a>
-<span class="sourceLineNo">511</span>      // preload table descriptor at startup<a name="line.511"></a>
-<span class="sourceLineNo">512</span>      this.preLoadTableDescriptors = conf.getBoolean("hbase.master.preload.tabledescriptors", true);<a name="line.512"></a>
-<span class="sourceLineNo">513</span><a name="line.513"></a>
-<span class="sourceLineNo">514</span>      this.maxBlancingTime = getMaxBalancingTime();<a name="line.514"></a>
-<span class="sourceLineNo">515</span>      this.maxRitPercent = conf.getDouble(HConstants.HBASE_MASTER_BALANCER_MAX_RIT_PERCENT,<a name="line.515"></a>
-<span class="sourceLineNo">516</span>          HConstants.DEFAULT_HBASE_MASTER_BALANCER_MAX_RIT_PERCENT);<a name="line.516"></a>
-<span class="sourceLineNo">517</span><a name="line.517"></a>
-<span class="sourceLineNo">518</span>      // Do we publish the status?<a name="line.518"></a>
-<span class="sourceLineNo">519</span><a name="line.519"></a>
-<span class="sourceLineNo">520</span>      boolean shouldPublish = conf.getBoolean(HConstants.STATUS_PUBLISHED,<a name="line.520"></a>
-<span class="sourceLineNo">521</span>          HConstants.STATUS_PUBLISHED_DEFAULT);<a name="line.521"></a>
-<span class="sourceLineNo">522</span>      Class&lt;? extends ClusterStatusPublisher.Publisher&gt; publisherClass =<a name="line.522"></a>
-<span class="sourceLineNo">523</span>          conf.getClass(ClusterStatusPublisher.STATUS_PUBLISHER_CLASS,<a name="line.523"></a>
-<span class="sourceLineNo">524</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS,<a name="line.524"></a>
-<span class="sourceLineNo">525</span>              ClusterStatusPublisher.Publisher.class);<a name="line.525"></a>
-<span class="sourceLineNo">526</span><a name="line.526"></a>
-<span class="sourceLineNo">527</span>      if (shouldPublish) {<a name="line.527"></a>
-<span class="sourceLineNo">528</span>        if (publisherClass == null) {<a name="line.528"></a>
-<span class="sourceLineNo">529</span>          LOG.warn(HConstants.STATUS_PUBLISHED + " is true, but " +<a name="line.529"></a>
-<span class="sourceLineNo">530</span>              ClusterStatusPublisher.DEFAULT_STATUS_PUBLISHER_CLASS +<a name="line.530"></a>
-<span class="sourceLineNo">531</span>              " is not set - not publishing status");<a name="line.531"></a>
-<span class="sourceLineNo">532</span>        } else {<a name="line.532"></a>
-<span class="sourceLineNo">533</span>          clusterStatusPublisherChore = new ClusterStatusPublisher(this, conf, publisherClass);<a name="line.533"></a>
-<span class="sourceLineNo">534</span>          getChoreService().scheduleChore(clusterStatusPublisherChore);<a name="line.534"></a>
-<span class="sourceLineNo">535</span>        }<a name="line.535"></a>
-<span class="sourceLineNo">536</span>      }<a name="line.536"></a>
-<span class="sourceLineNo">537</span><a name="line.537"></a>
-<span class="sourceLineNo">538</span>      // Some unit tests don't need a cluster, so no zookeeper at all<a name="line.538"></a>
-<span class="sourceLineNo">539</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.539"></a>
-<span class="sourceLineNo">540</span>        this.activeMasterManager = new ActiveMasterManager(zooKeeper, this.serverName, this);<a name="line.540"></a>
-<span class="sourceLineNo">541</span>      } else {<a name="line.541"></a>
-<span class="sourceLineNo">542</span>        this.activeMasterManager = null;<a name="line.542"></a>
-<span class="sourceLineNo">543</span>      }<a name="line.543"></a>
-<span class="sourceLineNo">544</span>    } catch (Throwable t) {<a name="line.544"></a>
-<span class="sourceLineNo">545</span>      // Make sure we log the exception. HMaster is often started via reflection and the<a name="line.545"></a>
-<span class="sourceLineNo">546</span>      // cause of failed startup is lost.<a name="line.546"></a>
-<span class="sourceLineNo">547</span>      LOG.error("Failed construction of Master", t);<a name="line.547"></a>
-<span class="sourceLineNo">548</span>      throw t;<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><a name="line.551"></a>
-<span class="sourceLineNo">552</span>  @Override<a name="line.552"></a>
-<span class="sourceLineNo">553</span>  protected String getUseThisHostnameInstead(Configuration conf) {<a name="line.553"></a>
-<span class="sourceLineNo">554</span>    return conf.get(MASTER_HOSTNAME_KEY);<a name="line.554"></a>
-<span class="sourceLineNo">555</span>  }<a name="line.555"></a>
-<span class="sourceLineNo">556</span><a name="line.556"></a>
-<span class="sourceLineNo">557</span>  // Main run loop. Calls through to the regionserver run loop AFTER becoming active Master; will<a name="line.557"></a>
-<span class="sourceLineNo">558</span>  // block in here until then.<a name="line.558"></a>
-<span class="sourceLineNo">559</span>  @Override<a name="line.559"></a>
-<span class="sourceLineNo">560</span>  public void run() {<a name="line.560"></a>
-<span class="sourceLineNo">561</span>    try {<a name="line.561"></a>
-<span class="sourceLineNo">562</span>      if (!conf.getBoolean("hbase.testing.nocluster", false)) {<a name="line.562"></a>
-<span class="sourceLineNo">563</span>        Threads.setDaemonThreadRunning(new Thread(() -&gt; {<a name="line.563"></a>
-<span class="sourceLineNo">564</span>          try {<a name="line.564"></a>
-<span class="sourceLineNo">565</span>            int infoPort = putUpJettyServer();<a name="line.565"></a>
-<span class="sourceLineNo">566</span>            startActiveMasterManager(infoPort);<a name="line.566"></a>
-<span class="sourceLineNo">567</span>          } catch (Throwable t) {<a name="line.567"></a>
-<span class="sourceLineNo">568</span>            // Make sure we log the exception.<a name="line.568"></a>
-<span class="sourceLineNo">569</span>            String error = "Failed to become Active Master";<a name="line.569"></a>
-<span class="sourceLineNo">570</span>            LOG.error(error, t);<a name="line.570"></a>
-<span class="sourceLineNo">571</span>            // Abort should have been called already.<a name="line.571"></a>
-<span class="sourceLineNo">572</span>            if (!isAborted()) {<a name="line.572"></a>
-<span class="sourceLineNo">573</span>              abort(error, t);<a name="line.573"></a>
-<span class="sourceLineNo">574</span>            }<a name="line.574"></a>
-<span class="sourceLineNo">575</span>          }<a name="line.575"></a>
-<span class="sourceLineNo">576</span>        }));<a name="line.576"></a>
-<span class="sourceLineNo">577</span>      }<a name="line.577"></a>
-<span class="sourceLineNo">578</span>      // Fall in here even if we have been aborted. Need to run the shutdown services and<a name="line.578"></a>
-<span class="sourceLineNo">579</span>      // the super run call will do this for us.<a name="line.579"></a>
-<span class="sourceLineNo">580</span>      super.run();<a name="line.580"></a>
-<span class="sourceLineNo">581</span>    } finally {<a name="line.581"></a>
-<span class="sourceLineNo">582</span>      if (this.clusterSchemaService != null) {<a name="line.582"></a>
-<span class="sourceLineNo">583</span>        // If on way out, then we are no longer active master.<a name="line.583"></a>
-<span class="sourceLineNo">584</span>        this.clusterSchemaService.stopAsync();<a name="line.584"></a>
-<span class="sourceLineNo">585</span>        try {<a name="line.585"></a>
-<span class="sourceLineNo">586</span>          this.clusterSchemaService.awaitTerminated(<a name="line.586"></a>
-<span class="sourceLineNo">587</span>              getConfiguration().getInt(HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS,<a name="line.587"></a>
-<span class="sourceLineNo">588</span>              DEFAULT_HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS), TimeUnit.SECONDS);<a name="line.588"></a>
-<span class="sourceLineNo">589</span>        } catch (TimeoutException te) {<a name="line.589"></a>
-<span class="sourceLineNo">590</span>          LOG.warn("Failed shutdown of clusterSchemaService", te);<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>      this.activeMaster = false;<a name="line.593"></a>
-<span class="sourceLineNo">594</span>    }<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>  // return the actual infoPort, -1 means disable info server.<a name="line.597"></a>
-<span class="sourceLineNo">598</span>  private int putUpJettyServer() throws IOException {<a name="line.598"></a>
-<span class="sourceLineNo">599</span>    if (!conf.getBoolean("hbase.master.infoserver.redirect", true)) {<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>    final int infoPort = conf.getInt("hbase.master.info.port.orig",<a name="line.602"></a>
-<span class="sourceLineNo">603</span>      HConstants.DEFAULT_MASTER_INFOPORT);<a name="line.603"></a>
-<span class="sourceLineNo">604</span>    // -1 is for disabling info server, so no redirecting<a name="line.604"></a>
-<span class="sourceLineNo">605</span>    if (infoPort &lt; 0 || infoServer == null) {<a name="line.605"></a>
-<span class="sourceLineNo">606</span>      return -1;<a name="line.606"></a>
-<span class="sourceLineNo">607</span>    }<a name="line.607"></a>
-<span class="sourceLineNo">608</span>    if(infoPort == infoServer.getPort()) {<a name="line.608"></a>
-<span class="sourceLineNo">609</span>      return infoPort;<a name="line.609"></a>
-<span class="sourceLineNo">610</span>    }<a name="line.610"></a>
-<span class="sourceLineNo">611</span>    final String addr = conf.get("hbase.master.info.bindAddress", "0.0.0.0");<a name="line.611"></a>
-<span class="sourceLineNo">612</span>    if (!Addressing.isLocalAddress(InetAddress.getByName(addr))) {<a name="line.612"></a>
-<span class="sourceLineNo">613</span>      String msg =<a name="line.613"></a>
-<span class="sourceLineNo">614</span>          "Failed to start redirecting jetty server. Address " + addr<a name="line.614"></a>
-<span class="sourceLineNo">615</span>              + " does not belong to this host. Correct configuration parameter: "<a name="line.615"></a>
-<span class="sourceLineNo">616</span>              + "hbase.master.info.bindAddress";<a name="line.616"></a>
-<span class="sourceLineNo">617</span>      LOG.error(msg);<a name="line.617"></a>
-<span class="sourceLineNo">618</span>      throw new IOException(msg);<a name="line.618"></a>
-<span class="sourceLineNo">619</span>    }<a name="line.619"></a>
-<span class="sourceLineNo">620</span><a name="line.620"></a>
-<span class="sourceLineNo">621</span>    // TODO I'm pretty sure we could just add another binding to the InfoServer run by<a name="line.621"></a>
-<span class="sourceLineNo">622</span>    // the RegionServer and have it run the RedirectServlet instead of standing up<a name="line.622"></a>
-<span class="sourceLineNo">623</span>    // a second entire stack here.<a name="line.623"></a>
-<span class="sourceLineNo">624</span>    masterJettyServer = new Server();<a name="line.624"></a>
-<span class="sourceLineNo">625</span>    final ServerConnector connector = new ServerConnector(masterJettyServer);<a name="line.625"></a>
-<span class="sourceLineNo">626</span>    connector.setHost(addr);<a name="line.626"></a>
-<span class="sourceLineNo">627</span>    connector.setPort(infoPort);<a name="line.627"></a>
-<span class="sourceLineNo">628</span>    masterJettyServer.addConnector(connector);<a name="line.628"></a>
-<span class="sourceLineNo">629</span>    masterJettyServer.setStopAtShutdown(true);<a name="line.629"></a>
-<span class="sourceLineNo">630</span><a name="line.630"></a>
-<span class="sourceLineNo">631</span>    final String redirectHostname =<a name="line.631"></a>
-<span class="sourceLineNo">632</span>        StringUtils.isBlank(useThisHostnameInstead) ? null : useThisHostnameInstead;<a name="line.632"></a>
-<span class="sourceLineNo">633</span><a name="line.633"></a>
-<span class="sourceLineNo">634</span>    final RedirectServlet redirect = new RedirectServlet(infoServer, redirectHostname);<a name="line.634"></a>
-<span class="sourceLineNo">635</span>    final WebAppContext context = new WebAppContext(null, "/", null, null, null, null, WebAppContext.NO_SESSIONS);<a name="line.635"></a>
-<span class="sourceLineNo">636</span>    context.addServlet(new ServletHolder(redirect), "/*");<a name="line.636"></a>
-<span class="sourceLineNo">637</span>    context.setServer(masterJettyServer);<a name="line.637"></a>
-<span class="sourceLineNo">638</span><a name="line.638"></a>
-<span class="sourceLineNo">639</span>    try {<a name="line.639"></a>
-<span class="sourceLineNo">640</span>      masterJettyServer.start();<a name="line.640"></a>
-<span class="sourceLineNo">641</span>    } catch (Exception e) {<a name="line.641"></a>
-<span class="sourceLineNo">642</span>      throw new IOException("Failed to start redirecting jetty server", e);<a name="line.642"></a>
-<span class="sourceLineNo">643</span>    }<a name="line.643"></a>
-<span class="sourceLineNo">644</span>    return connector.getLocalPort();<a name="line.644"></a>
-<span class="sourceLineNo">645</span>  }<a name="line.645"></a>
-<span class="sourceLineNo">646</span><a name="line.646"></a>
-<span class="sourceLineNo">647</span>  @Override<a name="line.647"></a>
-<span class="sourceLineNo">648</span>  protected Function&lt;TableDescriptorBuilder, TableDescriptorBuilder&gt; getMetaTableObserver() {<a name="line.648"></a>
-<span class="sourceLineNo">649</span>    return builder -&gt; builder.setRegionReplication(conf.getInt(HConstants.META_REPLICAS_NUM, HConstants.DEFAULT_META_REPLICA_NUM));<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>   * For compatibility, if failed with regionserver credentials, try the master one<a name="line.652"></a>
-<span class="sourceLineNo">653</span>   */<a name="line.653"></a>
-<span class="sourceLineNo">654</span>  @Override<a name="line.654"></a>
-<span class="sourceLineNo">655</span>  protected void login(UserProvider user, String host) throws IOException {<a name="line.655"></a>
-<span class="sourceLineNo">656</span>    try {<a name="line.656"></a>
-<span class="sourceLineNo">657</span>      super.login(user, host);<a name="line.657"></a>
-<span class="sourceLineNo">658</span>    } catch (IOException ie) {<a name="line.658"></a>
-<span class="sourceLineNo">659</span>      user.login("hbase.master.keytab.file",<a name="line.659"></a>
-<span class="sourceLineNo">660</span>        "hbase.master.kerberos.principal", host);<a name="line.660"></a>
-<span class="sourceLineNo">661</span>    }<a name="line.661"></a>
-<span class="sourceLineNo">662</span>  }<a name="line.662"></a>
-<span class="sourceLineNo">663</span><a name="line.663"></a>
-<span class="sourceLineNo">664</span>  /**<a name="line.664"></a>
-<span class="sourceLineNo">665</span>   * If configured to put regions on active master,<a name="line.665"></a>
-<span class="sourceLineNo">666</span>   * wait till a backup master becomes active.<a name="line.666"></a>
-<span class="sourceLineNo">667</span>   * Otherwise, loop till the server is stopped or aborted.<a name="line.667"></a>
-<span class="sourceLineNo">668</span>   */<a name="line.668"></a>
-<span class="sourceLineNo">669</span>  @Override<a name="line.669"></a>
-<span class="sourceLineNo">670</span>  protected void waitForMasterActive(){<a name="line.670"></a>
-<span class="sourceLineNo">671</span>    boolean tablesOnMaster = LoadBalancer.isTablesOnMaster(conf);<a name="line.671"></a>
-<span class="sourceLineNo">672</span>    while (!(tablesOnMaster &amp;&amp; activeMaster) &amp;&amp; !isStopped() &amp;&amp; !isAborted()) {<a name="line.672"></a>
-<span class="sourceLineNo">673</span>      sleeper.sleep();<a name="line.673"></a>
-<span class="sourceLineNo">674</span>    }<a name="line.674"></a>
-<span class="sourceLineNo">675</span>  }<a name="line.675"></a>
-<span class="sourceLineNo">676</span><a name="line.676"></a>
-<span class="sourceLineNo">677</span>  @VisibleForTesting<a name="line.677"></a>
-<span class="sourceLineNo">678</span>  public MasterRpcServices getMasterRpcServices() {<a name="line.678"></a>
-<span class="sourceLineNo">679</span>    return (MasterRpcServices)rpcServices;<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>  public boolean balanceSwitch(final boolean b) throws IOException {<a name="line.682"></a>
-<span class="sourceLineNo">683</span>    return getMasterRpcServices().switchBalancer(b, BalanceSwitchMode.ASYNC);<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>  @Override<a name="line.686"></a>
-<span class="sourceLineNo">687</span>  protected String getProcessName() {<a name="line.687"></a>
-<span class="sourceLineNo">688</span>    return MASTER;<a name="line.688"></a>
-<span class="sourceLineNo">689</span>  }<a name="line.689"></a>
-<span class="sourceLineNo">690</span><a name="line.690"></a>
-<span class="sourceLineNo">691</span>  @Override<a name="line.691"></a>
-<span class="sourceLineNo">692</span>  protected boolean canCreateBaseZNode() {<a name="line.692"></a>
-<span class="sourceLineNo">693</span>    return true;<a name="line.693"></a>
-<span class="sourceLineNo">694</span>  }<a name="line.694"></a>
-<span class="sourceLineNo">695</span><a name="line.695"></a>
-<span class="sourceLineNo">696</span>  @Override<a name="line.696"></a>
-<span class="sourceLineNo">697</span>  protected boolean canUpdateTableDescriptor() {<a name="line.697"></a>
-<span class="sourceLineNo">698</span>    return true;<a name="line.698"></a>
-<span class="sourceLineNo">699</span>  }<a name="line.699"></a>
-<span class="sourceLineNo">700</span><a name="line.700"></a>
-<span class="sourceLineNo">701</span>  @Override<a name="line.701"></a>
-<span class="sourceLineNo">702</span>  protected RSRpcServices createRpcServices() throws IOException {<a name="line.702"></a>
-<span class="sourceLineNo">703</span>    return new MasterRpcServices(this);<a name="line.703"></a>
-<span class="sourceLineNo">704</span>  }<a name="line.704"></a>
-<span class="sourceLineNo">705</span><a name="line.705"></a>
-<span class="sourceLineNo">706</span>  @Override<a name="line.706"></a>
-<span class="sourceLineNo">707</span>  protected void configureInfoServer() {<a name="line.707"></a>
-<span class="sourceLineNo">708</span>    infoServer.addServlet("master-status", "/master-status", MasterStatusServlet.class);<a name="line.708"></a>
-<span class="sourceLineNo">709</span>    infoServer.setAttribute(MASTER, this);<a name="line.709"></a>
-<span class="sourceLineNo">710</span>    if (LoadBalancer.isTablesOnMaster(conf)) {<a name="line.710"></a>
-<span class="sourceLineNo">711</span>      super.configureInfoServer();<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><a name="line.714"></a>
-<span class="sourceLineNo">715</span>  @Override<a name="line.715"></a>
-<span class="sourceLineNo">716</span>  protected Class&lt;? extends HttpServlet&gt; getDumpServlet() {<a name="line.716"></a>
-<span class="sourceLineNo">717</span>    return MasterDumpServlet.class;<a name="line.717"></a>
-<span class="sourceLineNo">718</span>  }<a name="line.718"></a>
-<span class="sourceLineNo">719</span><a name="line.719"></a>
-<span class="sourceLineNo">720</span>  @Override<a name="line.720"></a>
-<span class="sourceLineNo">721</span>  public MetricsMaster getMasterMetrics() {<a name="line.721"></a>
-<span class="sourceLineNo">722</span>    return metricsMaster;<a name="line.722"></a>
-<span class="sourceLineNo">723</span>  }<a name="line.723"></a>
-<span class="sourceLineNo">724</span><a name="line.724"></a>
-<span class="sourceLineNo">725</span>  /**<a name="line.725"></a>
-<span class="sourceLineNo">726</span>   * &lt;p&gt;<a name="line.726"></a>
-<span class="sourceLineNo">727</span>   * Initialize all ZK based system trackers. But do not include {@link RegionServerTracker}, it<a name="line.727"></a>
-<span class="sourceLineNo">728</span>   * should have already been initialized along with {@link ServerManager}.<a name="line.728"></a>
-<span class="sourceLineNo">729</span>   * &lt;/p&gt;<a name="line.729"></a>
-<span class="sourceLineNo">730</span>   * &lt;p&gt;<a name="line.730"></a>
-<span class="sourceLineNo">731</span>   * Will be overridden in tests.<a name="line.731"></a>
-<span class="sourceLineNo">732</span>   * &lt;/p&gt;<a name="line.732"></a>
-<span class="sourceLineNo">733</span>   */<a name="line.733"></a>
-<span class="sourceLineNo">734</span>  @VisibleForTesting<a name="line.734"></a>
-<span class="sourceLineNo">735</span>  protected void initializeZKBasedSystemTrackers()<a name="line.735"></a>
-<span class="sourceLineNo">736</span>      throws IOException, InterruptedException, KeeperException, ReplicationException {<a name="line.736"></a>
-<span class="sourceLineNo">737</span>    this.balancer = LoadBalancerFactory.getLoadBalancer(conf);<a name="line.737"></a>
-<span class="sourceLineNo">738</span>    this.normalizer = RegionNormalizerFactory.getRegionNormalizer(conf);<a name="line.738"></a>
-<span class="sourceLineNo">739</span>    this.normalizer.setMasterServices(this);<a name="line.739"></a>
-<span class="sourceLineNo">740</span>    this.normalizer.setMasterRpcServices((MasterRpcServices)rpcServices);<a name="line.740"></a>
-<span class="sourceLineNo">741</span>    this.loadBalancerTracker = new LoadBalancerTracker(zooKeeper, this);<a name="line.741"></a>
-<span class="sourceLineNo">742</span>    this.loadBalancerTracker.start();<a name="line.742"></a>
-<span class="sourceLineNo">743</span><a name="line.743"></a>
-<span class="sourceLineNo">744</span>    this.regionNormalizerTracker = new RegionNormalizerTracker(zooKeeper, this);<a name="line.744"></a>
-<span class="sourceLineNo">745</span>    this.regionNormalizerTracker.start();<a name="line.745"></a>
-<span class="sourceLineNo">746</span><a name="line.746"></a>
-<span class="sourceLineNo">747</span>    this.splitOrMergeTracker = new SplitOrMergeTracker(zooKeeper, conf, this);<a name="line.747"></a>
-<span class="sourceLineNo">748</span>    this.splitOrMergeTracker.start();<a name="line.748"></a>
-<span class="sourceLineNo">749</span><a name="line.749"></a>
-<span class="sourceLineNo">750</span>    this.replicationPeerManager = ReplicationPeerManager.create(zooKeeper, conf);<a name="line.750"></a>
-<span class="sourceLineNo">751</span><a name="line.751"></a>
-<span class="sourceLineNo">752</span>    this.drainingServerTracker = new DrainingServerTracker(zooKeeper, this, this.serverManager);<a name="line.752"></a>
-<span class="sourceLineNo">753</span>    this.drainingServerTracker.start();<a name="line.753"></a>
-<span class="sourceLineNo">754</span><a name="line.754"></a>
-<span class="sourceLineNo">755</span>    this.maintenanceModeTracker = new MasterMaintenanceModeTracker(zooKeeper);<a name="line.755"></a>
-<span class="sourceLineNo">756</span>    this.maintenanceModeTracker.start();<a name="line.756"></a>
-<span class="sourceLineNo">757</span><a name="line.757"></a>
-<span class="sourceLineNo">758</span>    String clientQuorumServers = conf.get(HConstants.CLIENT_ZOOKEEPER_QUORUM);<a name="line.758"></a>
-<span class="sourceLineNo">759</span>    boolean clientZkObserverMode = conf.getBoolean(HConstants.CLIENT_ZOOKEEPER_OBSERVER_MODE,<a name="line.759"></a>
-<span class="sourceLineNo">760</span>      HConstants.DEFAULT_CLIENT_ZOOKEEPER_OBSERVER_MODE);<a name="line.760"></a>
-<span class="sourceLineNo">761</span>    if (clientQuorumServers != null &amp;&amp; !clientZkObserverMode) {<a name="line.761"></a>
-<span class="sourceLineNo">762</span>      // we need to take care of the ZK information synchronization<a name="line.762"></a>
-<span class="sourceLineNo">763</span>      // if given client ZK are not observer nodes<a name="line.763"></a>
-<span class="sourceLineNo">764</span>      ZKWatcher clientZkWatcher = new ZKWatcher(conf,<a name="line.764"></a>
-<span class="sourceLineNo">765</span>          getProcessName() + ":" + rpcServices.getSocketAddress().getPort() + "-clientZK", this,<a name="line.765"></a>
-<span class="sourceLineNo">766</span>          false, true);<a name="line.766"></a>
-<span class="sourceLineNo">767</span>      this.metaLocationSyncer = new MetaLocationSyncer(zooKeeper, clientZkWatcher, this);<a name="line.767"></a>
-<span class="sourceLineNo">768</span>      this.metaLocationSyncer.start();<a name="line.768"></a>
-<span class="sourceLineNo">769</span>      this.masterAddressSyncer = new MasterAddressSyncer(zooKeeper, clientZkWatcher, this);<a name="line.769"></a>
-<span class="sourceLineNo">770</span>      this.masterAddressSyncer.start();<a name="line.770"></a>
-<span class="sourceLineNo">771</span>      // set cluster id is a one-go effort<a name="line.771"></a>
-<span class="sourceLineNo">772</span>      ZKClusterId.setClusterId(clientZkWatcher, fileSystemManager.getClusterId());<a name="line.772"></a>
-<span class="sourceLineNo">773</span>    }<a name="line.773"></a>
-<span class="sourceLineNo">774</span><a name="line.774"></a>
-<span class="sourceLineNo">775</span>    // Set the cluster as up.  If new RSs, they'll be waiting on this before<a name="line.775"></a>
-<span class="sourceLineNo">776</span>    // going ahead with their startup.<a name="line.776"></a>
-<span class="sourceLineNo">777</span>    boolean wasUp = this.clusterStatusTracker.isClusterUp();<a name="line.777"></a>
-<span class="sourceLineNo">778</span>    if (!wasUp) this.clusterStatusTracker.setClusterUp();<a name="line.778"></a>
-<span class="sourceLineNo">779</span><a name="line.779"></a>
-<span class="sourceLineNo">780</span>    LOG.info("Active/primary master=" + this.serverName +<a name="line.780"></a>
-<span class="sourceLineNo">781</span>        ", sessionid=0x" +<a name="line.781"></a>
-<span class="sourceLineNo">782</span>        Long.toHexString(this.zooKeeper.getRecoverableZooKeeper().getSessionId()) +<a name="line.782"></a>
-<span class="sourceLineNo">783</span>        ", setting cluster-up flag (Was=" + wasUp + ")");<a name="line.783"></a>
-<span class="sourceLineNo">784</span><a name="line.784"></a>
-<span class="sourceLineNo">785</span>    // create/initialize the snapshot manager and other procedure managers<a name="line.785"></a>
-<span class="sourceLineNo">786</span>    this.snapshotManager = new SnapshotManager();<a name="line.786"></a>
-<span class="sourceLineNo">787</span>    this.mpmHost = new MasterProcedureManagerHost();<a name="line.787"></a>
-<span class="sourceLineNo">788</span>    this.mpmHost.register(this.snapshotManager);<a name="line.788"></a>
-<span class="sourceLineNo">789</span>    this.mpmHost.register(new MasterFlushTableProcedureManager());<a name="line.789"></a>
-<span class="sourceLineNo">790</span>    this.mpmHost.loadProcedures(conf);<a name="line.790"></a>
-<span class="sourceLineNo">791</span>    this.mpmHost.initialize(this, this.metricsMaster);<a name="line.791"></a>
-<span class="sourceLineNo">792</span>  }<a name="line.792"></a>
-<span class="sourceLineNo">793</span><a name="line.793"></a>
-<span class="sourceLineNo">794</span>  /**<a name="line.794"></a>
-<span class="sourceLineNo">795</span>   * Finish initialization of HMaster after becoming the primary master.<a name="line.795"></a>
-<span class="sourceLineNo">796</span>   * &lt;p/&gt;<a name="line.796"></a>
-<span class="sourceLineNo">797</span>   * The startup order is a bit complicated but very important, do not change it unless you know<a name="line.797"></a>
-<span class="sourceLineNo">798</span>   * what you are doing.<a name="line.798"></a>
-<span class="sourceLineNo">799</span>   * &lt;ol&gt;<a name="line.799"></a>
-<span class="sourceLineNo">800</span>   * &lt;li&gt;Initialize file system based components - file system manager, wal manager, table<a name="line.800"></a>
-<span class="sourceLineNo">801</span>   * descriptors, etc&lt;/li&gt;<a name="line.801"></a>
-<span class="sourceLineNo">802</span>   * &lt;li&gt;Publish cluster id&lt;/li&gt;<a name="line.802"></a>
-<span class="sourceLineNo">803</span>   * &lt;li&gt;Here comes the most complicated part - initialize server manager, assignment manager and<a name="line.803"></a>
-<span class="sourceLineNo">804</span>   * region server tracker<a name="line.804"></a>
-<span class="sourceLineNo">805</span>   * &lt;ol type='i'&gt;<a name="line.805"></a>
-<span class="sourceLineNo">806</span>   * &lt;li&gt;Create server manager&lt;/li&gt;<a name="line.806"></a>
-<span class="sourceLineNo">807</span>   * &lt;li&gt;Create procedure executor, load the procedures, but do not start workers. We will start it<a name="line.807"></a>
-<span class="sourceLineNo">808</span>   * later after we finish scheduling SCPs to avoid scheduling duplicated SCPs for the same<a name="line.808"></a>
-<span class="sourceLineNo">809</span>   * server&lt;/li&gt;<a name="line.809"></a>
-<span class="sourceLineNo">810</span>   * &lt;li&gt;Create assignment manager and start it, load the meta region state, but do not load data<a name="line.810"></a>
-<span class="sourceLineNo">811</span>   * from meta region&lt;/li&gt;<a name="line.811"></a>
-<span class="sourceLineNo">812</span>   * &lt;li&gt;Start region server tracker, construct the online servers set and find out dead servers and<a name="line.812"></a>
-<span class="sourceLineNo">813</span>   * schedule SCP for them. The online servers will be constructed by scanning zk, and we will also<a name="line.813"></a>
-<span class="sourceLineNo">814</span>   * scan the wal directory to find out possible live region servers, and the differences between<a name="line.814"></a>
-<span class="sourceLineNo">815</span>   * these two sets are the dead servers&lt;/li&gt;<a name="line.815"></a>
-<span class="sourceLineNo">816</span>   * &lt;/ol&gt;<a name="line.816"></a>
-<span class="sourceLineNo">817</span>   * &lt;/li&gt;<a name="line.817"></a>
-<span class="sourceLineNo">818</span>   * &lt;li&gt;If this is a new deploy, schedule a InitMetaProcedure to initialize meta&lt;/li&gt;<a name="line.818"></a>
-<span class="sourceLineNo">819</span>   * &lt;li&gt;Start necessary service threads - balancer, catalog janior, executor services, and also the<a name="line.819"></a>
-<span class="sourceLineNo">820</span>   * procedure executor, etc. Notice that the balancer must be created first as assignment manager<a name="line.820"></a>
-<span class="sourceLineNo">821</span>   * may use it when assigning regions.&lt;/li&gt;<a name="line.821"></a>
-<span class="sourceLineNo">822</span>   * &lt;li&gt;Wait for meta to be initialized if necesssary, start table state manager.&lt;/li&gt;<a name="line.822"></a>
-<span class="sourceLineNo">823</span>   * &lt;li&gt;Wait for enough region servers to check-in&lt;/li&gt;<a name="line.823"></a>
-<span class="sourceLineNo">824</span>   * &lt;li&gt;Let assignment manager load data from meta and construct region states&lt;/li&gt;<a name="line.824"></a>
-<span class="sourceLineNo">825</span>   * &lt;li&gt;Start all other things such as chore services, etc&lt;/li&gt;<a name="line.825"></a>
-<span class="sourceLineNo">826</span>   * &lt;/ol&gt;<a name="line.826"></a>
-<span class="sourceLineNo">827</span>   * &lt;p/&gt;<a name="line.827"></a>
-<span class="sourceLineNo">828</span>   * Notice that now we will not schedule a special procedure to make meta online(unless the first<a name="line.828"></a>
-<span class="sourceLineNo">829</span>   * time where meta has not been created yet), we will rely on SCP to bring meta online.<a name="line.829"></a>
-<span class="sourceLineNo">830</span>   */<a name="line.830"></a>
-<span class="sourceLineNo">831</span>  private void finishActiveMasterInitialization(MonitoredTask status) throws IOException,<a name="line.831"></a>
-<span class="sourceLineNo">832</span>          InterruptedException, KeeperException, ReplicationException {<a name="line.832"></a>
-<span class="sourceLineNo">833</span>    Thread zombieDetector = new Thread(new InitializationMonitor(this),<a name="line.833"></a>
-<span class="sourceLineNo">834</span>        "ActiveMasterInitializationMonitor-" + System.currentTimeMillis());<a name="line.834"></a>
-<span class="sourceLineNo">835</span>    zombieDetector.setDaemon(true);<a name="line.835"></a>
-<span class="sourceLineNo">836</span>    zombieDetector.start();<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>     * We are active master now... go initialize components we need to run.<a name="line.839"></a>
-<span class="sourceLineNo">840</span>     */<a name="line.840"></a>
-<span class="sourceLineNo">841</span>    status.setStatus("Initializing Master file system");<a name="line.841"></a>
-<span class="sourceLineNo">842</span><a name="line.842"></a>
-<span class="sourceLineNo">843</span>    this.masterActiveTime = System.currentTimeMillis();<a name="line.843"></a>
-<span class="sourceLineNo">844</span>    // TODO: Do this using Dependency Injection, using PicoContainer, Guice or Spring.<a name="line.844"></a>
-<span class="sourceLineNo">845</span>    // Initialize the chunkCreator<a name="line.845"></a>
-<span class="sourceLineNo">846</span>    initializeMemStoreChunkCreator();<a name="line.846"></a>
-<span class="sourceLineNo">847</span>    this.fileSystemManager = new MasterFileSystem(conf);<a name="line.847"></a>
-<span class="sourceLineNo">848</span>    this.walManager = new MasterWalManager(this);<a name="line.848"></a>
-<span class="sourceLineNo">849</span><a name="line.849"></a>
-<span class="sourceLineNo">850</span>    // enable table descriptors cache<a name="line.850"></a>
-<span class="sourceLineNo">851</span>    this.tableDescriptors.setCacheOn();<a name="line.851"></a>
-<span class="sourceLineNo">852</span><a name="line.852"></a>
-<span class="sourceLineNo">853</span>    // warm-up HTDs cache on master initialization<a name="line.853"></a>
-<span class="sourceLineNo">854</span>    if (preLoadTableDescriptors) {<a name="line.854"></a>
-<span class="sourceLineNo">855</span>      status.setStatus("Pre-loading table descriptors");<a name="line.855"></a>
-<span class="sourceLineNo">856</span>      this.tableDescriptors.getAll();<a name="line.856"></a>
-<span class="sourceLineNo">857</span>    }<a name="line.857"></a>
-<span class="sourceLineNo">858</span><a name="line.858"></a>
-<span class="sourceLineNo">859</span>    // Publish cluster ID; set it in Master too. The superclass RegionServer does this later but<a name="line.859"></a>
-<span class="sourceLineNo">860</span>    // only after it has checked in with the Master. At least a few tests ask Master for clusterId<a name="line.860"></a>
-<span class="sourceLineNo">861</span>    // before it has called its run method and before RegionServer has done the reportForDuty.<a name="line.861"></a>
-<span class="sourceLineNo">862</span>    ClusterId clusterId = fileSystemManager.getClusterId();<a name="line.862"></a>
-<span class="sourceLineNo">863</span>    status.setStatus("Publishing Cluster ID " + clusterId + " in ZooKeeper");<a name="line.863"></a>
-<span class="sourceLineNo">864</span>    ZKClusterId.setClusterId(this.zooKeeper, fileSystemManager.getClusterId());<a name="line.864"></a>
-<span class="sourceLineNo">865</span>    this.clusterId = clusterId.toString();<a name="line.865"></a>
-<span class="sourceLineNo">866</span><a name="line.866"></a>
+<span class="sourceLineNo">175</span>import org.apache.hadoop.hbase.replication.ReplicationLoadSource;<a name="line.175"></a>
+<span class="sourceLineNo">176</span>import org.apache.hadoop.hbase.replication.ReplicationPeerConfig;<a name="line.176"></a>
+<span class="sourceLineNo">177</span>import org.apache.hadoop.hbase.replication.ReplicationPeerDescription;<a name="line.177"></a>
+<span class="sourceLineNo">178</span>import org.apache.hadoop.hbase.replication.ReplicationUtils;<a name="line.178"></a>
+<span class="sourceLineNo">179</span>import org.apache.hadoop.hbase.replication.master.ReplicationHFileCleaner;<a name="line.179"></a>
+<span class="sourceLineNo">180</span>import org.apache.hadoop.hbase.replication.master.ReplicationLogCleaner;<a name="line.180"></a>
+<span class="sourceLineNo">181</span>import org.apache.hadoop.hbase.replication.master.ReplicationPeerConfigUpgrader;<a name="line.181"></a>
+<span class="sourceLineNo">182</span>import org.apache.hadoop.hbase.security.AccessDeniedException;<a name="line.182"></a>
+<span class="sourceLineNo">183</span>import org.apache.hadoop.hbase.security.UserProvider;<a name="line.183"></a>
+<span class="sourceLineNo">184</span>import org.apache.hadoop.hbase.trace.TraceUtil;<a name="line.184"></a>
+<span class="sourceLineNo">185</span>import org.apache.hadoop.hbase.util.Addressing;<a name="line.185"></a>
+<span class="sourceLineNo">186</span>import org.apache.hadoop.hbase.util.Bytes;<a name="line.186"></a>
+<span class="sourceLineNo">187</span>import org.apache.hadoop.hbase.util.CompressionTest;<a name="line.187"></a>
+<span class="sourceLineNo">188</span>import org.apache.hadoop.hbase.util.EncryptionTest;<a name="line.188"></a>
+<span class="sourceLineNo">189</span>import org.apache.hadoop.hbase.util.HFileArchiveUtil;<a name="line.189"></a>
+<span class="sourceLineNo">190</span>import org.apache.hadoop.hbase.util.HasThread;<a name="line.190"></a>
+<span class="sourceLineNo">191</span>import org.apache.hadoop.hbase.util.IdLock;<a name="line.191"></a>
+<span class="sourceLineNo">192</span>import org.apache.hadoop.hbase.util.ModifyRegionUtils;<a name="line.192"></a>
+<span class="sourceLineNo">193</span>import org.apache.hadoop.hbase.util.Pair;<a name="line.193"></a>
+<span class="sourceLineNo">194</span>import org.apache.hadoop.hbase.util.Threads;<a name="line.194"></a>
+<span class="sourceLineNo">195</span>import org.apache.hadoop.hbase.util.VersionInfo;<a name="line.195"></a>
+<span class="sourceLineNo">196</span>import org.apache.hadoop.hbase.zookeeper.LoadBalancerTracker;<a name="line.196"></a>
+<span class="sourceLineNo">197</span>import org.apache.hadoop.hbase.zookeeper.MasterAddressTracker;<a name="line.197"></a>
+<span class="sourceLineNo">198</span>import org.apache.hadoop.hbase.zookeeper.MasterMaintenanceModeTracker;<a name="line.198"></a>
+<span class="sourceLineNo">199</span>import org.apache.hadoop.hbase.zookeeper.RegionNormalizerTracker;<a name="line.199"></a>
+<span class="sourceLineNo">200</span>import org.apache.hadoop.hbase.zookeeper.ZKClusterId;<a name="line.200"></a>
+<span class="sourceLineNo">201</span>import org.apache.hadoop.hbase.zookeeper.ZKUtil;<a name="line.201"></a>
+<span class="sourceLineNo">202</span>import org.apache.hadoop.hbase.zookeeper.ZKWatcher;<a name="line.202"></a>
+<span class="sourceLineNo">203</span>import org.apache.hadoop.hbase.zookeeper.ZNodePaths;<a name="line.203"></a>
+<span class="sourceLineNo">204</span>import org.apache.yetus.audience.InterfaceAudience;<a name="line.204"></a>
+<span class="sourceLineNo">205</span>import org.apache.zookeeper.KeeperException;<a name="line.205"></a>
+<span class="sourceLineNo">206</span>import org.eclipse.jetty.server.Server;<a name="line.206"></a>
+<span class="sourceLineNo">207</span>import org.eclipse.jetty.server.ServerConnector;<a name="line.207"></a>
+<span class="sourceLineNo">208</span>import org.eclipse.jetty.servlet.ServletHolder;<a name="line.208"></a>
+<span class="sourceLineNo">209</span>import org.eclipse.jetty.webapp.WebAppContext;<a name="line.209"></a>
+<span class="sourceLineNo">210</span>import org.slf4j.Logger;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>import org.slf4j.LoggerFactory;<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>import org.apache.hbase.thirdparty.com.google.common.annotations.VisibleForTesting;<a name="line.213"></a>
+<span class="sourceLineNo">214</span>import org.apache.hbase.thirdparty.com.google.common.collect.Lists;<a name="line.214"></a>
+<span class="sourceLineNo">215</span>import org.apache.hbase.thirdparty.com.google.common.collect.Maps;<a name="line.215"></a>
+<span class="sourceLineNo">216</span><a name="line.216"></a>
+<span class="sourceLineNo">217</span>import org.apache.hadoop.hbase.shaded.protobuf.ProtobufUtil;<a name="line.217"></a>
+<span class="sourceLineNo">218</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.AdminProtos.GetRegionInfoResponse.CompactionState;<a name="line.218"></a>
+<span class="sourceLineNo">219</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.Quotas;<a name="line.219"></a>
+<span class="sourceLineNo">220</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.QuotaProtos.SpaceViolationPolicy;<a name="line.220"></a>
+<span class="sourceLineNo">221</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription;<a name="line.221"></a>
+<span class="sourceLineNo">222</span>import org.apache.hadoop.hbase.shaded.protobuf.generated.WALProtos;<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> * HMaster is the "master server" for HBase. An HBase cluster has one active<a name="line.225"></a>
+<span class="sourceLineNo">226</span> * master.  If many masters are started, all compete.  Whichever wins goes on to<a name="line.226"></a>
+<span class="sourceLineNo">227</span> * run the cluster.  All others park themselves in their constructor until<a name="line.227"></a>
+<span class="sourceLineNo">228</span> * master or cluster shutdown or until the active master loses its lease in<a name="line.228"></a>
+<span class="sourceLineNo">229</span> * zookeeper.  Thereafter, all running master jostle to take over master role.<a name="line.229"></a>
+<span class="sourceLineNo">230</span> *<a name="line.230"></a>
+<span class="sourceLineNo">231</span> * &lt;p&gt;The Master can be asked shutdown the cluster. See {@link #shutdown()}.  In<a name="line.231"></a>
+<span class="sourceLineNo">232</span> * this case it will tell all regionservers to go down and then wait on them<a name="line.232"></a>
+<span class="sourceLineNo">233</span> * all reporting in that they are down.  This master will then shut itself down.<a name="line.233"></a>
+<span class="sourceLineNo">234</span> *<a name="line.234"></a>
+<span class="sourceLineNo">235</span> * &lt;p&gt;You can also shutdown just this master.  Call {@link #stopMaster()}.<a name="line.235"></a>
+<span class="sourceLineNo">236</span> *<a name="line.236"></a>
+<span class="sourceLineNo">237</span> * @see org.apache.zookeeper.Watcher<a name="line.237"></a>
+<span class="sourceLineNo">238</span> */<a name="line.238"></a>
+<span class="sourceLineNo">239</span>@InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.TOOLS)<a name="line.239"></a>
+<span class="sourceLineNo">240</span>@SuppressWarnings("deprecation")<a name="line.240"></a>
+<span class="sourceLineNo">241</span>public class HMaster extends HRegionServer implements MasterServices {<a name="line.241"></a>
+<span class="sourceLineNo">242</span>  private static Logger LOG = LoggerFactory.getLogger(HMaster.class);<a name="line.242"></a>
+<span class="sourceLineNo">243</span><a name="line.243"></a>
+<span class="sourceLineNo">244</span>  /**<a name="line.244"></a>
+<span class="sourceLineNo">245</span>   * Protection against zombie master. Started once Master accepts active responsibility and<a name="line.245"></a>
+<span class="sourceLineNo">246</span>   * starts taking over responsibilities. Allows a finite time window before giving up ownership.<a name="line.246"></a>
+<span class="sourceLineNo">247</span>   */<a name="line.247"></a>
+<span class="sourceLineNo">248</span>  private static class InitializationMonitor extends HasThread {<a name="line.248"></a>
+<span class="sourceLineNo">249</span>    /** The amount of time in milliseconds to sleep before checking initialization status. */<a name="line.249"></a>
+<span class="sourceLineNo">250</span>    public static final String TIMEOUT_KEY = "hbase.master.initializationmonitor.timeout";<a name="line.250"></a>
+<span class="sourceLineNo">251</span>    public static final long TIMEOUT_DEFAULT = TimeUnit.MILLISECONDS.convert(15, TimeUnit.MINUTES);<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>     * When timeout expired and initialization has not complete, call {@link System#exit(int)} when<a name="line.254"></a>
+<span class="sourceLineNo">255</span>     * true, do nothing otherwise.<a name="line.255"></a>
+<span class="sourceLineNo">256</span>     */<a name="line.256"></a>
+<span class="sourceLineNo">257</span>    public static final String HALT_KEY = "hbase.master.initializationmonitor.haltontimeout";<a name="line.257"></a>
+<span class="sourceLineNo">258</span>    public static final boolean HALT_DEFAULT = false;<a name="line.258"></a>
+<span class="sourceLineNo">259</span><a name="line.259"></a>
+<span class="sourceLineNo">260</span>    private final HMaster master;<a name="line.260"></a>
+<span class="sourceLineNo">261</span>    private final long timeout;<a name="line.261"></a>
+<span class="sourceLineNo">262</span>    private final boolean haltOnTimeout;<a name="line.262"></a>
+<span class="sourceLineNo">263</span><a name="line.263"></a>
+<span class="sourceLineNo">264</span>    /** Creates a Thread that monitors the {@link #isInitialized()} state. */<a name="line.264"></a>
+<span class="sourceLineNo">265</span>    InitializationMonitor(HMaster master) {<a name="line.265"></a>
+<span class="sourceLineNo">266</span>      super("MasterInitializationMonitor");<a name="line.266"></a>
+<span class="sourceLineNo">267</span>      this.master = master;<a name="line.267"></a>
+<span class="sourceLineNo">268</span>      this.timeout = master.getConfiguration().getLong(TIMEOUT_KEY, TIMEOUT_DEFAULT);<a name="line.268"></a>
+<span class="sourceLineNo">269</span>      this.haltOnTimeout = master.getConfiguration().getBoolean(HALT_KEY, HALT_DEFAULT);<a name="line.269"></a>
+<span class="sourceLineNo">270</span>      this.setDaemon(true);<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>    public void run() {<a name="line.274"></a>
+<span class="sourceLineNo">275</span>      try {<a name="line.275"></a>
+<span class="sourceLineNo">276</span>        while (!master.isStopped() &amp;&amp; master.isActiveMaster()) {<a name="line.276"></a>
+<span class="sourceLineNo">277</span>          Thread.sleep(timeout);<a name="line.277"></a>
+<span class="sourceLineNo">278</span>          if (master.isInitialized()) {<a name="line.278"></a>
+<span class="sourceLineNo">279</span>            LOG.debug("Initialization completed within allotted tolerance. Monitor exiting.");<a name="line.279"></a>
+<span class="sourceLineNo">280</span>          } else {<a name="line.280"></a>
+<span class="sourceLineNo">281</span>            LOG.error("Master failed to complete initialization after " + timeout + "ms. Please"<a name="line.281"></a>
+<span class="sourceLineNo">282</span>                + " consider submitting a bug report including a thread dump of this process.");<a name="line.282"></a>
+<span class="sourceLineNo">283</span>            if (haltOnTimeout) {<a name="line.283"></a>
+<span class="sourceLineNo">284</span>              LOG.error("Zombie Master exiting. Thread dump to stdout");<a name="line.284"></a>
+<span class="sourceLineNo">285</span>              Threads.printThreadInfo(System.out, "Zombie HMaster");<a name="line.285"></a>
+<span class="sourceLineNo">286</span>              System.exit(-1);<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>      } catch (InterruptedException ie) {<a name="line.290"></a>
+<span class="sourceLineNo">291</span>        LOG.trace("InitMonitor thread interrupted. Existing.");<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><a name="line.295"></a>
+<span class="sourceLineNo">296</span>  // MASTER is name of the webapp and the attribute name used stuffing this<a name="line.296"></a>
+<span class="sourceLineNo">297</span>  //instance into web context.<a name="line.297"></a>
+<span class="sourceLineNo">298</span>  public static final String MASTER = "master";<a name="line.298"></a>
+<span class="sourceLineNo">299</span><a name="line.299"></a>
+<span class="sourceLineNo">300</span>  // Manager and zk listener for master election<a name="line.300"></a>
+<span class="sourceLineNo">301</span>  private final ActiveMasterManager activeMasterManager;<a name="line.301"></a>
+<span class="sourceLineNo">302</span>  // Region server tracker<a name="line.302"></a>
+<span class="sourceLineNo">303</span>  private RegionServerTracker regionServerTracker;<a name="line.303"></a>
+<span class="sourceLineNo">304</span>  // Draining region server tracker<a name="line.304"></a>
+<span class="sourceLineNo">305</span>  private DrainingServerTracker drainingServerTracker;<a name="line.305"></a>
+<span class="sourceLineNo">306</span>  // Tracker for load balancer state<a name="line.306"></a>
+<span class="sourceLineNo">307</span>  LoadBalancerTracker loadBalancerTracker;<a name="line.307"></a>
+<span class="sourceLineNo">308</span>  // Tracker for meta location, if any client ZK quorum specified<a name="line.308"></a>
+<span class="sourceLineNo">309</span>  MetaLocationSyncer metaLocationSyncer;<a name="line.309"></a>
+<span class="sourceLineNo">310</span>  // Tracker for active master location, if any client ZK quorum specified<a name="line.310"></a>
+<span class="sourceLineNo">311</span>  MasterAddressSyncer masterAddressSyncer;<a name="line.311"></a>
+<span class="sourceLineNo">312</span><a name="line.312"></a>
+<span class="sourceLineNo">313</span>  // Tracker for split and merge state<a name="line.313"></a>
+<span class="sourceLineNo">314</span>  private SplitOrMergeTracker splitOrMergeTracker;<a name="line.314"></a>
+<span class="sourceLineNo">315</span><a name="line.315"></a>
+<span class="sourceLineNo">316</span>  // Tracker for region normalizer state<a name="line.316"></a>
+<span class="sourceLineNo">317</span>  private RegionNormalizerTracker regionNormalizerTracker;<a name="line.317"></a>
+<span class="sourceLineNo">318</span><a name="line.318"></a>
+<span class="sourceLineNo">319</span>  //Tracker for master maintenance mode setting<a name="line.319"></a>
+<span class="sourceLineNo">320</span>  private MasterMaintenanceModeTracker maintenanceModeTracker;<a name="line.320"></a>
+<span class="sourceLineNo">321</span><a name="line.321"></a>
+<span class="sourceLineNo">322</span>  private ClusterSchemaService clusterSchemaService;<a name="line.322"></a>
+<span class="sourceLineNo">323</span><a name="line.323"></a>
+<span class="sourceLineNo">324</span>  public static final String HBASE_MASTER_WAIT_ON_SERVICE_IN_SECONDS =<a name="line.324"></a>
+<span class="sourceLineNo">325</span>    "hbase.master.wait.on.service.seconds";<a name="line.325"></a>
+<span class="sourceLineNo">326

<TRUNCATED>

[34/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 79ec538..05e85cc 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/HMasterCommandLine.LocalHMaster.html
@@ -247,7 +247,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html" tit
 <!--   -->
 </a>
 <h3>Methods 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#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
 ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
 vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
 ">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
 thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
 MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
 html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
 /hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/
 hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../.
 ./org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerO
 n--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master
 /HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">modifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoo
 p.hbase.client.TableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemoteProcedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.Stri
 ng-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../
 ../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-">updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.la
 ng.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
+<code><a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abort-java.lang.String-java.lang.Throwable-">abort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#abortProcedure-long-boolean-">abortProcedure</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">addColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#addReplicationPeer-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-boolean-">addReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance--">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balance-boolean-">balance</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#balanceSwitch-boolean-">balanceSwitch</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMa
 ster.html#canCreateBaseZNode--">canCreateBaseZNode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#canUpdateTableDescriptor--">canUpdateTableDescriptor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkIfShouldMoveSystemRegionAsync--">checkIfShouldMoveSystemRegionAsync</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkInitialized--">checkInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkServiceStarted--">checkServiceStarted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#checkTableModifiable-org.apache.hadoop.hbase.TableName-">checkTableModifiable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#configureInfoServer--">configureInfoServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#constructMaster-java.lang.Class-org.apache.hadoop.conf.Configuration-">constructMaster</a>, <a href="../../.
 ./../../org/apache/hadoop/hbase/master/HMaster.html#createMetaBootstrap--">createMetaBootstrap</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">createNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createRpcServices--">createRpcServices</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createServerManager-org.apache.hadoop.hbase.master.MasterServices-">createServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createSystemTable-org.apache.hadoop.hbase.client.TableDescriptor-">createSystemTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#createTable-org.apache.hadoop.hbase.client.TableDescriptor-byte:A:A-long-long-">createTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decommissionRegionServers-java.util.List-boolean-">decommissionRegionSer
 vers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#decorateMasterConfiguration-org.apache.hadoop.conf.Configuration-">decorateMasterConfiguration</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteColumn-org.apache.hadoop.hbase.TableName-byte:A-long-long-">deleteColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteNamespace-java.lang.String-long-long-">deleteNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#deleteTable-org.apache.hadoop.hbase.TableName-long-long-">deleteTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableReplicationPeer-java.lang.String-">disableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#disableTable-org.apache.hadoop.hbase.TableName-long-long-">disableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableReplicationPeer-java.lang.String-
 ">enableReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#enableTable-org.apache.hadoop.hbase.TableName-long-long-">enableTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAssignmentManager--">getAssignmentManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getAverageLoad--">getAverageLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getCatalogJanitor--">getCatalogJanitor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClientIdAuditPrefix--">getClientIdAuditPrefix</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics--">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetrics-java.util.EnumSet-">getClusterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor--">getClusterMetricsWi
 thoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterMetricsWithoutCoprocessor-java.util.EnumSet-">getClusterMetricsWithoutCoprocessor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getClusterSchema--">getClusterSchema</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getDumpServlet--">getDumpServlet</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getFavoredNodesManager--">getFavoredNodesManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getHFileCleaner--">getHFileCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getInitializedEvent--">getInitializedEvent</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLastMajorCompactionTimestamp-org.apache.hadoop.hbase.TableName-">getLastMajorCompactionTimestamp</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLast
 MajorCompactionTimestampForRegion-byte:A-">getLastMajorCompactionTimestampForRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancer--">getLoadBalancer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadBalancerClassName--">getLoadBalancerClassName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLoadedCoprocessors--">getLoadedCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLockManager--">getLockManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLocks--">getLocks</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getLogCleaner--">getLogCleaner</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterActiveTime--">getMasterActiveTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessorHost--">getMasterCoprocessorHost</a>, <a href=
 "../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterCoprocessors--">getMasterCoprocessors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFileSystem--">getMasterFileSystem</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterFinishedInitializationTime--">getMasterFinishedInitializationTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterMetrics--">getMasterMetrics</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureExecutor--">getMasterProcedureExecutor</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterProcedureManagerHost--">getMasterProcedureManagerHost</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterQuotaManager--">getMasterQuotaManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterRpcServices--">getMasterRpcServices</a>, <a href
 ="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterStartTime--">getMasterStartTime</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMasterWalManager--">getMasterWalManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMergePlanCount--">getMergePlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMetaTableObserver--">getMetaTableObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getMobCompactionState-org.apache.hadoop.hbase.TableName-">getMobCompactionState</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespace-java.lang.String-">getNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNamespaces--">getNamespaces</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getNumWALFiles--">getNumWALFiles</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.
 html#getProcedures--">getProcedures</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getProcessName--">getProcessName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getQuotaObserverChore--">getQuotaObserverChore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizer--">getRegionNormalizer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionNormalizerTracker--">getRegionNormalizerTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerFatalLogBuffer--">getRegionServerFatalLogBuffer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerInfoPort-org.apache.hadoop.hbase.ServerName-">getRegionServerInfoPort</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getRegionServerVersion-org.apache.hadoop.hbase.ServerName-">getRegionServerVersion</a>, <a href="../../../../../org/apache
 /hadoop/hbase/master/HMaster.html#getRemoteInetAddress-int-long-">getRemoteInetAddress</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerConfig-java.lang.String-">getReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationPeerManager--">getReplicationPeerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerManager--">getServerManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getServerName--">getServerName</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotManager--">getSnapshotManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSnapshotQuotaObserverChore--">getSnapshotQuotaObserverChore</a>, <a href="../../../../
 ../org/apache/hadoop/hbase/master/HMaster.html#getSpaceQuotaSnapshotNotifier--">getSpaceQuotaSnapshotNotifier</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitOrMergeTracker--">getSplitOrMergeTracker</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getSplitPlanCount--">getSplitPlanCount</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableDescriptors--">getTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableRegionForRow-org.apache.hadoop.hbase.TableName-byte:A-">getTableRegionForRow</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getTableStateManager--">getTableStateManager</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getUseThisHostnameInstead-org.apache.hadoop.conf.Configuration-">getUseThisHostnameInstead</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getWalProcedureStore--">
 getWalProcedureStore</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#getZooKeeper--">getZooKeeper</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initClusterSchemaService--">initClusterSchemaService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#initializeZKBasedSystemTrackers--">initializeZKBasedSystemTrackers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isActiveMaster--">isActiveMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isBalancerOn--">isBalancerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCatalogJanitorEnabled--">isCatalogJanitorEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isCleanerChoreEnabled--">isCleanerChoreEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isInitialized--">isInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase
 /master/HMaster.html#isInMaintenanceMode--">isInMaintenanceMode</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isNormalizerOn--">isNormalizerOn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#isSplitOrMergeEnabled-org.apache.hadoop.hbase.client.MasterSwitchType-">isSplitOrMergeEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listDecommissionedRegionServers--">listDecommissionedRegionServers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listReplicationPeers-java.lang.String-">listReplicationPeers</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptors-java.lang.String-java.lang.String-java.util.List-boolean-">listTableDescriptors</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableDescriptorsByNamespace-java.lang.String-">listTableDescriptorsByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/mas
 ter/HMaster.html#listTableNames-java.lang.String-java.lang.String-boolean-">listTableNames</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#listTableNamesByNamespace-java.lang.String-">listTableNamesByNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#login-org.apache.hadoop.hbase.security.UserProvider-java.lang.String-">login</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#main-java.lang.String:A-">main</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#mergeRegions-org.apache.hadoop.hbase.client.RegionInfo:A-boolean-long-long-">mergeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyColumn-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.ColumnFamilyDescriptor-long-long-">modifyColumn</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyNamespace-org.apache.hadoop.hbase.NamespaceDescriptor-long-long-">m
 odifyNamespace</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#modifyTable-org.apache.hadoop.hbase.TableName-org.apache.hadoop.hbase.client.TableDescriptor-long-long-">modifyTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#move-byte:A-byte:A-">move</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#normalizeRegions--">normalizeRegions</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#recommissionRegionServer-org.apache.hadoop.hbase.ServerName-java.util.List-">recommissionRegionServer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#registerService-com.google.protobuf.Service-">registerService</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureCompleted-long-">remoteProcedureCompleted</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#remoteProcedureFailed-long-org.apache.hadoop.hbase.procedure2.RemotePr
 ocedureException-">remoteProcedureFailed</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#removeReplicationPeer-java.lang.String-">removeReplicationPeer</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionEnd-org.apache.hadoop.hbase.TableName-">reportMobCompactionEnd</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#reportMobCompactionStart-org.apache.hadoop.hbase.TableName-">reportMobCompactionStart</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#requestMobCompaction-org.apache.hadoop.hbase.TableName-java.util.List-boolean-">requestMobCompaction</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#restoreSnapshot-org.apache.hadoop.hbase.shaded.protobuf.generated.SnapshotProtos.SnapshotDescription-long-long-boolean-">restoreSnapshot</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setCatalogJanitorEnabled-boolean-">setCatalogJani
 torEnabled</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#setInitialized-boolean-">setInitialized</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#shutdown--">shutdown</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#splitRegion-org.apache.hadoop.hbase.client.RegionInfo-byte:A-long-long-">splitRegion</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stop-java.lang.String-">stop</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopMaster--">stopMaster</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#stopServiceThreads--">stopServiceThreads</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#truncateTable-org.apache.hadoop.hbase.TableName-boolean-long-long-">truncateTable</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateConfigurationForSpaceQuotaObserver-org.apache.hadoop.conf.Configuration-"
 >updateConfigurationForSpaceQuotaObserver</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#updateReplicationPeerConfig-java.lang.String-org.apache.hadoop.hbase.replication.ReplicationPeerConfig-">updateReplicationPeerConfig</a>, <a href="../../../../../org/apache/hadoop/hbase/master/HMaster.html#waitForMasterActive--">waitForMasterActive</a></code></li>
 </ul>
 <ul class="blockList">
 <li class="blockList"><a name="methods.inherited.from.class.org.apache.hadoop.hbase.regionserver.HRegionServer">

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
index 48ed585..70b5948 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html
@@ -117,7 +117,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.381">AssignProcedure.CompareAssignProcedure</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.384">AssignProcedure.CompareAssignProcedure</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a>
 implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparator.html?is-external=true" title="class or interface in java.util">Comparator</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&gt;</pre>
 <div class="block">Sort AssignProcedures such that meta and system assigns come first before user-space assigns.
@@ -198,7 +198,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CompareAssignProcedure</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.381">CompareAssignProcedure</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.384">CompareAssignProcedure</a>()</pre>
 </li>
 </ul>
 </li>
@@ -215,7 +215,7 @@ implements <a href="https://docs.oracle.com/javase/8/docs/api/java/util/Comparat
 <ul class="blockListLast">
 <li class="blockList">
 <h4>compare</h4>
-<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.383">compare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;left,
+<pre>public&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.CompareAssignProcedure.html#line.386">compare</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;left,
                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignProcedure.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignProcedure</a>&nbsp;right)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
index 6741c37..ee66fc3 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html
@@ -650,7 +650,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>handleFailure</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.320">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.323">handleFailure</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                            <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 <div class="block">Called when dispatch or subsequent OPEN request fail. Can be run by the
  inline dispatch call or later by the ServerCrashProcedure. Our state is
@@ -664,7 +664,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>incrementAndCheckMaxAttempts</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.333">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.336">incrementAndCheckMaxAttempts</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                              <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode)</pre>
 </li>
 </ul>
@@ -674,7 +674,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallBuild</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.344">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteOperation.html" title="class in org.apache.hadoop.hbase.procedure2">RemoteProcedureDispatcher.RemoteOperation</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.347">remoteCallBuild</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                                                  <a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;serverName)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/RemoteProcedureDispatcher.RemoteProcedure.html#remoteCallBuild-TEnv-TRemote-">RemoteProcedureDispatcher.RemoteProcedure</a></code></span></div>
 <div class="block">For building the remote operation.</div>
@@ -692,7 +692,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>remoteCallFailed</h4>
-<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.351">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
+<pre>protected&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.354">remoteCallFailed</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env,
                                    <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.RegionStateNode.html" title="class in org.apache.hadoop.hbase.master.assignment">RegionStates.RegionStateNode</a>&nbsp;regionNode,
                                    <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;exception)</pre>
 <dl>
@@ -711,7 +711,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>toStringClassDetails</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.358">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.361">toStringClassDetails</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/StringBuilder.html?is-external=true" title="class or interface in java.lang">StringBuilder</a>&nbsp;sb)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#toStringClassDetails-java.lang.StringBuilder-">Procedure</a></code></span></div>
 <div class="block">Extend the toString() information with the procedure details
  e.g. className and parameters</div>
@@ -729,7 +729,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockList">
 <li class="blockList">
 <h4>getServer</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/master/assignment/AssignProcedure.html#line.364">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</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/master/assignment/AssignProcedure.html#line.367">getServer</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionTransitionProcedure.html#getServer-org.apache.hadoop.hbase.master.procedure.MasterProcedureEnv-">RegionTransitionProcedure</a></code></span></div>
 <div class="block">Used by ServerCrashProcedure to see if this Assign/Unassign needs processing.</div>
 <dl>
@@ -746,7 +746,7 @@ extends <a href="../../../../../../org/apache/hadoop/hbase/master/assignment/Reg
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getProcedureMetrics</h4>
-<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.372">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
+<pre>protected&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/procedure2/ProcedureMetrics.html" title="interface in org.apache.hadoop.hbase.procedure2">ProcedureMetrics</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/AssignProcedure.html#line.375">getProcedureMetrics</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/procedure/MasterProcedureEnv.html" title="class in org.apache.hadoop.hbase.master.procedure">MasterProcedureEnv</a>&nbsp;env)</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/procedure2/Procedure.html#getProcedureMetrics-TEnvironment-">Procedure</a></code></span></div>
 <div class="block">Override this method to provide procedure specific counters for submitted count, failed
  count and time histogram.</div>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
index 3bd4c3c..753878a 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html
@@ -292,7 +292,7 @@ the order they are declared.</div>
 <ul class="blockList">
 <li class="blockList">
 <h4>values</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.503">values</a>()</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>[]&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.504">values</a>()</pre>
 <div class="block">Returns an array containing the constants of this enum type, in
 the order they are declared.  This method may be used to iterate
 over the constants as follows:
@@ -312,7 +312,7 @@ for (RegionStates.ServerState c : RegionStates.ServerState.values())
 <ul class="blockListLast">
 <li class="blockList">
 <h4>valueOf</h4>
-<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.503">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
+<pre>public static&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html" title="enum in org.apache.hadoop.hbase.master.assignment">RegionStates.ServerState</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/assignment/RegionStates.ServerState.html#line.504">valueOf</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;name)</pre>
 <div class="block">Returns the enum constant of this type with the specified name.
 The string must match <i>exactly</i> an identifier used to declare an
 enum constant in this type.  (Extraneous whitespace characters are 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
index 43720f2..39be59b 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html
@@ -551,7 +551,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>mapHostNameToServerName</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.237">mapHostNameToServerName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;hosts)</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.236">mapHostNameToServerName</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&gt;&nbsp;hosts)</pre>
 <div class="block">Map hostname to ServerName, The output ServerName list will have the same
  order as input hosts.</div>
 <dl>
@@ -568,7 +568,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>getBlockDistribution</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.273">getBlockDistribution</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.272">getBlockDistribution</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
 </li>
 </ul>
 <a name="asyncGetBlockDistribution-org.apache.hadoop.hbase.client.RegionInfo-">
@@ -577,7 +577,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>asyncGetBlockDistribution</h4>
-<pre>private&nbsp;org.apache.hbase.thirdparty.com.google.common.util.concurrent.ListenableFuture&lt;<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.294">asyncGetBlockDistribution</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
+<pre>private&nbsp;org.apache.hbase.thirdparty.com.google.common.util.concurrent.ListenableFuture&lt;<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.292">asyncGetBlockDistribution</a>(<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&nbsp;hri)</pre>
 </li>
 </ul>
 <a name="refreshAndWait-java.util.Collection-">
@@ -586,7 +586,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockList">
 <li class="blockList">
 <h4>refreshAndWait</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.303">refreshAndWait</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;hris)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.301">refreshAndWait</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Collection.html?is-external=true" title="class or interface in java.util">Collection</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>&gt;&nbsp;hris)</pre>
 </li>
 </ul>
 <a name="getCache--">
@@ -595,7 +595,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCache</h4>
-<pre>org.apache.hbase.thirdparty.com.google.common.cache.LoadingCache&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.326">getCache</a>()</pre>
+<pre>org.apache.hbase.thirdparty.com.google.common.cache.LoadingCache&lt;<a href="../../../../../../org/apache/hadoop/hbase/client/RegionInfo.html" title="interface in org.apache.hadoop.hbase.client">RegionInfo</a>,<a href="../../../../../../org/apache/hadoop/hbase/HDFSBlocksDistribution.html" title="class in org.apache.hadoop.hbase">HDFSBlocksDistribution</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/balancer/RegionLocationFinder.html#line.324">getCache</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
index 55644d3..9152464 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html
@@ -105,7 +105,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.452">CleanerChore.Action</a>&lt;T&gt;</pre>
+<pre>private static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.446">CleanerChore.Action</a>&lt;T&gt;</pre>
 </li>
 </ul>
 </div>
@@ -149,7 +149,7 @@ var activeTableTab = "activeTableTab";
 <ul class="blockListLast">
 <li class="blockList">
 <h4>act</h4>
-<pre><a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html" title="type parameter in CleanerChore.Action">T</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html#line.453">act</a>()
+<pre><a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html" title="type parameter in CleanerChore.Action">T</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html#line.447">act</a>()
 throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <dl>
 <dt><span class="throwsLabel">Throws:</span></dt>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
index 8b46848..82070ed 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html
@@ -127,7 +127,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.460">CleanerChore.CleanerTask</a>
+<pre>private class <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.454">CleanerChore.CleanerTask</a>
 extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RecursiveTask.html?is-external=true" title="class or interface in java.util.concurrent">RecursiveTask</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</pre>
 <div class="block">Attemps to clean up a directory, its subdirectories, and files.
  Return value is true if everything was deleted. false on partial / total failures.</div>
@@ -259,7 +259,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockList">
 <li class="blockList">
 <h4>dir</h4>
-<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.461">dir</a></pre>
+<pre>private final&nbsp;org.apache.hadoop.fs.Path <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.455">dir</a></pre>
 </li>
 </ul>
 <a name="root">
@@ -268,7 +268,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>root</h4>
-<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.462">root</a></pre>
+<pre>private final&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.456">root</a></pre>
 </li>
 </ul>
 </li>
@@ -285,7 +285,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockList">
 <li class="blockList">
 <h4>CleanerTask</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.464">CleanerTask</a>(org.apache.hadoop.fs.FileStatus&nbsp;dir,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.458">CleanerTask</a>(org.apache.hadoop.fs.FileStatus&nbsp;dir,
             boolean&nbsp;root)</pre>
 </li>
 </ul>
@@ -295,7 +295,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>CleanerTask</h4>
-<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.468">CleanerTask</a>(org.apache.hadoop.fs.Path&nbsp;dir,
+<pre><a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.462">CleanerTask</a>(org.apache.hadoop.fs.Path&nbsp;dir,
             boolean&nbsp;root)</pre>
 </li>
 </ul>
@@ -313,7 +313,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockList">
 <li class="blockList">
 <h4>compute</h4>
-<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.474">compute</a>()</pre>
+<pre>protected&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.468">compute</a>()</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RecursiveTask.html?is-external=true#compute--" title="class or interface in java.util.concurrent">compute</a></code>&nbsp;in class&nbsp;<code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/RecursiveTask.html?is-external=true" title="class or interface in java.util.concurrent">RecursiveTask</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;</code></dd>
@@ -326,7 +326,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilteredStatus</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.526">getFilteredStatus</a>(org.apache.hbase.thirdparty.com.google.common.base.Predicate&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;function)
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.520">getFilteredStatus</a>(org.apache.hbase.thirdparty.com.google.common.base.Predicate&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;function)
                                                          throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get FileStatus with filter.
  Pay attention that FSUtils #listStatusWithStatusFilter would return null,
@@ -347,7 +347,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteAction</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.536">deleteAction</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html" title="interface in org.apache.hadoop.hbase.master.cleaner">CleanerChore.Action</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;deletion,
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.530">deleteAction</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/cleaner/CleanerChore.Action.html" title="interface in org.apache.hadoop.hbase.master.cleaner">CleanerChore.Action</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&gt;&nbsp;deletion,
                              <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;type)</pre>
 <div class="block">Perform a delete on a specified type.</div>
 <dl>
@@ -365,7 +365,7 @@ extends <a href="https://docs.oracle.com/javase/8/docs/api/java/util/concurrent/
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getCleanResult</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.565">getCleanResult</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/master/cleaner/CleanerChore.CleanerTask.html" title="class in org.apache.hadoop.hbase.master.cleaner">CleanerChore.CleanerTask</a>&gt;&nbsp;tasks)
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.CleanerTask.html#line.559">getCleanResult</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/master/cleaner/CleanerChore.CleanerTask.html" title="class in org.apache.hadoop.hbase.master.cleaner">CleanerChore.CleanerTask</a>&gt;&nbsp;tasks)
                         throws <a href="https://docs.oracle.com/javase/8/docs/api/java/io/IOException.html?is-external=true" title="class or interface in java.io">IOException</a></pre>
 <div class="block">Get cleaner results of subdirs.</div>
 <dl>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
index 6a7b65d..3f3af34 100644
--- a/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
+++ b/devapidocs/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html
@@ -671,7 +671,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>preRunCleaner</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.300">preRunCleaner</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.294">preRunCleaner</a>()</pre>
 </li>
 </ul>
 <a name="runCleaner--">
@@ -680,7 +680,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>runCleaner</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.304">runCleaner</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Boolean.html?is-external=true" title="class or interface in java.lang">Boolean</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.298">runCleaner</a>()</pre>
 </li>
 </ul>
 <a name="sortByConsumedSpace-java.util.List-">
@@ -689,7 +689,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>sortByConsumedSpace</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.315">sortByConsumedSpace</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.fs.FileStatus&gt;&nbsp;dirs)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.309">sortByConsumedSpace</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.fs.FileStatus&gt;&nbsp;dirs)</pre>
 <div class="block">Sort the given list in (descending) order of the space each element takes</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -703,7 +703,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>checkAndDeleteFiles</h4>
-<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.354">checkAndDeleteFiles</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.fs.FileStatus&gt;&nbsp;files)</pre>
+<pre>private&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.348">checkAndDeleteFiles</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.fs.FileStatus&gt;&nbsp;files)</pre>
 <div class="block">Run the given files through each of the cleaners to see if it should be deleted, deleting it if
  necessary.</div>
 <dl>
@@ -720,7 +720,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>deleteFiles</h4>
-<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.404">deleteFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;filesToDelete)</pre>
+<pre>protected&nbsp;int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.398">deleteFiles</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Iterable.html?is-external=true" title="class or interface in java.lang">Iterable</a>&lt;org.apache.hadoop.fs.FileStatus&gt;&nbsp;filesToDelete)</pre>
 <div class="block">Delete the given files</div>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
@@ -736,7 +736,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>cleanup</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.427">cleanup</a>()</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.421">cleanup</a>()</pre>
 <div class="block"><span class="descfrmTypeLabel">Description copied from class:&nbsp;<code><a href="../../../../../../org/apache/hadoop/hbase/ScheduledChore.html#cleanup--">ScheduledChore</a></code></span></div>
 <div class="block">Override to run cleanup tasks when the Chore encounters an error and must stop running</div>
 <dl>
@@ -751,7 +751,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>getChorePoolSize</h4>
-<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.438">getChorePoolSize</a>()</pre>
+<pre>int&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.432">getChorePoolSize</a>()</pre>
 </li>
 </ul>
 <a name="setEnabled-boolean-">
@@ -760,7 +760,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockList">
 <li class="blockList">
 <h4>setEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.445">setEnabled</a>(boolean&nbsp;enabled)</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.439">setEnabled</a>(boolean&nbsp;enabled)</pre>
 <dl>
 <dt><span class="paramLabel">Parameters:</span></dt>
 <dd><code>enabled</code> - </dd>
@@ -773,7 +773,7 @@ implements <a href="../../../../../../org/apache/hadoop/hbase/conf/Configuration
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.449">getEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/master/cleaner/CleanerChore.html#line.443">getEnabled</a>()</pre>
 </li>
 </ul>
 </li>

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

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


[28/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
index 73a9329..146c5e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionRecordReader.html
@@ -145,106 +145,110 @@
 <span class="sourceLineNo">137</span>    public RegionInfo getRegion() {<a name="line.137"></a>
 <span class="sourceLineNo">138</span>      return delegate.getRegionInfo();<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @VisibleForTesting<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  static class TableSnapshotRegionRecordReader extends<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    private TaskAttemptContext context;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private Method getCounter;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.context = context;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      delegate.initialize(<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        context.getConfiguration());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      boolean result = delegate.nextKeyValue();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      if (result) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return result;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return delegate.getCurrentKey();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return delegate.getCurrentValue();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return delegate.getProgress();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public void close() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      delegate.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return results;<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>  /**<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param job the job to configure<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param snapshotName the name of the snapshot to read from<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * After the job is finished, restoreDir can be deleted.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException if an error occurs<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param job the job to configure<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param snapshotName the name of the snapshot to read from<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * After the job is finished, restoreDir can be deleted.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException if an error occurs<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>             splitAlgo, numSplitsPerRegion);<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">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    TableSnapshotInputFormatImpl.InputSplit getDelegate() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return this.delegate;<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><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static class TableSnapshotRegionRecordReader extends<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    private TaskAttemptContext context;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    private Method getCounter;<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        InterruptedException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      this.context = context;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      delegate.initialize(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        context.getConfiguration());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      boolean result = delegate.nextKeyValue();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (result) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<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>      return result;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return delegate.getCurrentKey();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      return delegate.getCurrentValue();<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 float getProgress() throws IOException, InterruptedException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return delegate.getProgress();<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>    @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      delegate.close();<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return results;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @param job the job to configure<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param snapshotName the name of the snapshot to read from<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * After the job is finished, restoreDir can be deleted.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @throws IOException if an error occurs<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<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>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param job the job to configure<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param snapshotName the name of the snapshot to read from<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * After the job is finished, restoreDir can be deleted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @throws IOException if an error occurs<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>             splitAlgo, numSplitsPerRegion);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
index 73a9329..146c5e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.TableSnapshotRegionSplit.html
@@ -145,106 +145,110 @@
 <span class="sourceLineNo">137</span>    public RegionInfo getRegion() {<a name="line.137"></a>
 <span class="sourceLineNo">138</span>      return delegate.getRegionInfo();<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @VisibleForTesting<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  static class TableSnapshotRegionRecordReader extends<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    private TaskAttemptContext context;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private Method getCounter;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.context = context;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      delegate.initialize(<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        context.getConfiguration());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      boolean result = delegate.nextKeyValue();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      if (result) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return result;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return delegate.getCurrentKey();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return delegate.getCurrentValue();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return delegate.getProgress();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public void close() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      delegate.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return results;<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>  /**<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param job the job to configure<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param snapshotName the name of the snapshot to read from<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * After the job is finished, restoreDir can be deleted.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException if an error occurs<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param job the job to configure<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param snapshotName the name of the snapshot to read from<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * After the job is finished, restoreDir can be deleted.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException if an error occurs<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>             splitAlgo, numSplitsPerRegion);<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">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    TableSnapshotInputFormatImpl.InputSplit getDelegate() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return this.delegate;<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><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static class TableSnapshotRegionRecordReader extends<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    private TaskAttemptContext context;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    private Method getCounter;<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        InterruptedException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      this.context = context;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      delegate.initialize(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        context.getConfiguration());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      boolean result = delegate.nextKeyValue();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (result) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<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>      return result;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return delegate.getCurrentKey();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      return delegate.getCurrentValue();<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 float getProgress() throws IOException, InterruptedException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return delegate.getProgress();<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>    @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      delegate.close();<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return results;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @param job the job to configure<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param snapshotName the name of the snapshot to read from<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * After the job is finished, restoreDir can be deleted.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @throws IOException if an error occurs<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<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>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param job the job to configure<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param snapshotName the name of the snapshot to read from<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * After the job is finished, restoreDir can be deleted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @throws IOException if an error occurs<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>             splitAlgo, numSplitsPerRegion);<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>
 
 
 

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
----------------------------------------------------------------------
diff --git a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
index 73a9329..146c5e5 100644
--- a/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
+++ b/devapidocs/src-html/org/apache/hadoop/hbase/mapreduce/TableSnapshotInputFormat.html
@@ -145,106 +145,110 @@
 <span class="sourceLineNo">137</span>    public RegionInfo getRegion() {<a name="line.137"></a>
 <span class="sourceLineNo">138</span>      return delegate.getRegionInfo();<a name="line.138"></a>
 <span class="sourceLineNo">139</span>    }<a name="line.139"></a>
-<span class="sourceLineNo">140</span>  }<a name="line.140"></a>
-<span class="sourceLineNo">141</span><a name="line.141"></a>
-<span class="sourceLineNo">142</span>  @VisibleForTesting<a name="line.142"></a>
-<span class="sourceLineNo">143</span>  static class TableSnapshotRegionRecordReader extends<a name="line.143"></a>
-<span class="sourceLineNo">144</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.144"></a>
-<span class="sourceLineNo">145</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.145"></a>
-<span class="sourceLineNo">146</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.146"></a>
-<span class="sourceLineNo">147</span>    private TaskAttemptContext context;<a name="line.147"></a>
-<span class="sourceLineNo">148</span>    private Method getCounter;<a name="line.148"></a>
-<span class="sourceLineNo">149</span><a name="line.149"></a>
-<span class="sourceLineNo">150</span>    @Override<a name="line.150"></a>
-<span class="sourceLineNo">151</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.151"></a>
-<span class="sourceLineNo">152</span>        InterruptedException {<a name="line.152"></a>
-<span class="sourceLineNo">153</span>      this.context = context;<a name="line.153"></a>
-<span class="sourceLineNo">154</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.154"></a>
-<span class="sourceLineNo">155</span>      delegate.initialize(<a name="line.155"></a>
-<span class="sourceLineNo">156</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.156"></a>
-<span class="sourceLineNo">157</span>        context.getConfiguration());<a name="line.157"></a>
-<span class="sourceLineNo">158</span>    }<a name="line.158"></a>
-<span class="sourceLineNo">159</span><a name="line.159"></a>
-<span class="sourceLineNo">160</span>    @Override<a name="line.160"></a>
-<span class="sourceLineNo">161</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.161"></a>
-<span class="sourceLineNo">162</span>      boolean result = delegate.nextKeyValue();<a name="line.162"></a>
-<span class="sourceLineNo">163</span>      if (result) {<a name="line.163"></a>
-<span class="sourceLineNo">164</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.164"></a>
-<span class="sourceLineNo">165</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.165"></a>
-<span class="sourceLineNo">166</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<a name="line.166"></a>
-<span class="sourceLineNo">167</span>        }<a name="line.167"></a>
-<span class="sourceLineNo">168</span>      }<a name="line.168"></a>
-<span class="sourceLineNo">169</span>      return result;<a name="line.169"></a>
-<span class="sourceLineNo">170</span>    }<a name="line.170"></a>
-<span class="sourceLineNo">171</span><a name="line.171"></a>
-<span class="sourceLineNo">172</span>    @Override<a name="line.172"></a>
-<span class="sourceLineNo">173</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.173"></a>
-<span class="sourceLineNo">174</span>      return delegate.getCurrentKey();<a name="line.174"></a>
-<span class="sourceLineNo">175</span>    }<a name="line.175"></a>
-<span class="sourceLineNo">176</span><a name="line.176"></a>
-<span class="sourceLineNo">177</span>    @Override<a name="line.177"></a>
-<span class="sourceLineNo">178</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.178"></a>
-<span class="sourceLineNo">179</span>      return delegate.getCurrentValue();<a name="line.179"></a>
-<span class="sourceLineNo">180</span>    }<a name="line.180"></a>
-<span class="sourceLineNo">181</span><a name="line.181"></a>
-<span class="sourceLineNo">182</span>    @Override<a name="line.182"></a>
-<span class="sourceLineNo">183</span>    public float getProgress() throws IOException, InterruptedException {<a name="line.183"></a>
-<span class="sourceLineNo">184</span>      return delegate.getProgress();<a name="line.184"></a>
-<span class="sourceLineNo">185</span>    }<a name="line.185"></a>
-<span class="sourceLineNo">186</span><a name="line.186"></a>
-<span class="sourceLineNo">187</span>    @Override<a name="line.187"></a>
-<span class="sourceLineNo">188</span>    public void close() throws IOException {<a name="line.188"></a>
-<span class="sourceLineNo">189</span>      delegate.close();<a name="line.189"></a>
-<span class="sourceLineNo">190</span>    }<a name="line.190"></a>
-<span class="sourceLineNo">191</span>  }<a name="line.191"></a>
-<span class="sourceLineNo">192</span><a name="line.192"></a>
-<span class="sourceLineNo">193</span>  @Override<a name="line.193"></a>
-<span class="sourceLineNo">194</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.194"></a>
-<span class="sourceLineNo">195</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.195"></a>
-<span class="sourceLineNo">196</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.199"></a>
-<span class="sourceLineNo">200</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.200"></a>
-<span class="sourceLineNo">201</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.201"></a>
-<span class="sourceLineNo">202</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.202"></a>
-<span class="sourceLineNo">203</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.203"></a>
-<span class="sourceLineNo">204</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.204"></a>
-<span class="sourceLineNo">205</span>    }<a name="line.205"></a>
-<span class="sourceLineNo">206</span>    return results;<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>  /**<a name="line.209"></a>
-<span class="sourceLineNo">210</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.210"></a>
-<span class="sourceLineNo">211</span>   * @param job the job to configure<a name="line.211"></a>
-<span class="sourceLineNo">212</span>   * @param snapshotName the name of the snapshot to read from<a name="line.212"></a>
-<span class="sourceLineNo">213</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.213"></a>
-<span class="sourceLineNo">214</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.214"></a>
-<span class="sourceLineNo">215</span>   * After the job is finished, restoreDir can be deleted.<a name="line.215"></a>
-<span class="sourceLineNo">216</span>   * @throws IOException if an error occurs<a name="line.216"></a>
-<span class="sourceLineNo">217</span>   */<a name="line.217"></a>
-<span class="sourceLineNo">218</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.218"></a>
-<span class="sourceLineNo">219</span>      throws IOException {<a name="line.219"></a>
-<span class="sourceLineNo">220</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<a name="line.220"></a>
-<span class="sourceLineNo">221</span>  }<a name="line.221"></a>
-<span class="sourceLineNo">222</span><a name="line.222"></a>
-<span class="sourceLineNo">223</span>  /**<a name="line.223"></a>
-<span class="sourceLineNo">224</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.224"></a>
-<span class="sourceLineNo">225</span>   * @param job the job to configure<a name="line.225"></a>
-<span class="sourceLineNo">226</span>   * @param snapshotName the name of the snapshot to read from<a name="line.226"></a>
-<span class="sourceLineNo">227</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.227"></a>
-<span class="sourceLineNo">228</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.228"></a>
-<span class="sourceLineNo">229</span>   * After the job is finished, restoreDir can be deleted.<a name="line.229"></a>
-<span class="sourceLineNo">230</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.230"></a>
-<span class="sourceLineNo">231</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.231"></a>
-<span class="sourceLineNo">232</span>   * @throws IOException if an error occurs<a name="line.232"></a>
-<span class="sourceLineNo">233</span>   */<a name="line.233"></a>
-<span class="sourceLineNo">234</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.234"></a>
-<span class="sourceLineNo">235</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.235"></a>
-<span class="sourceLineNo">236</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.236"></a>
-<span class="sourceLineNo">237</span>             splitAlgo, numSplitsPerRegion);<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">140</span><a name="line.140"></a>
+<span class="sourceLineNo">141</span>    TableSnapshotInputFormatImpl.InputSplit getDelegate() {<a name="line.141"></a>
+<span class="sourceLineNo">142</span>      return this.delegate;<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><a name="line.145"></a>
+<span class="sourceLineNo">146</span>  @VisibleForTesting<a name="line.146"></a>
+<span class="sourceLineNo">147</span>  static class TableSnapshotRegionRecordReader extends<a name="line.147"></a>
+<span class="sourceLineNo">148</span>      RecordReader&lt;ImmutableBytesWritable, Result&gt; {<a name="line.148"></a>
+<span class="sourceLineNo">149</span>    private TableSnapshotInputFormatImpl.RecordReader delegate =<a name="line.149"></a>
+<span class="sourceLineNo">150</span>      new TableSnapshotInputFormatImpl.RecordReader();<a name="line.150"></a>
+<span class="sourceLineNo">151</span>    private TaskAttemptContext context;<a name="line.151"></a>
+<span class="sourceLineNo">152</span>    private Method getCounter;<a name="line.152"></a>
+<span class="sourceLineNo">153</span><a name="line.153"></a>
+<span class="sourceLineNo">154</span>    @Override<a name="line.154"></a>
+<span class="sourceLineNo">155</span>    public void initialize(InputSplit split, TaskAttemptContext context) throws IOException,<a name="line.155"></a>
+<span class="sourceLineNo">156</span>        InterruptedException {<a name="line.156"></a>
+<span class="sourceLineNo">157</span>      this.context = context;<a name="line.157"></a>
+<span class="sourceLineNo">158</span>      getCounter = TableRecordReaderImpl.retrieveGetCounterWithStringsParams(context);<a name="line.158"></a>
+<span class="sourceLineNo">159</span>      delegate.initialize(<a name="line.159"></a>
+<span class="sourceLineNo">160</span>        ((TableSnapshotRegionSplit) split).delegate,<a name="line.160"></a>
+<span class="sourceLineNo">161</span>        context.getConfiguration());<a name="line.161"></a>
+<span class="sourceLineNo">162</span>    }<a name="line.162"></a>
+<span class="sourceLineNo">163</span><a name="line.163"></a>
+<span class="sourceLineNo">164</span>    @Override<a name="line.164"></a>
+<span class="sourceLineNo">165</span>    public boolean nextKeyValue() throws IOException, InterruptedException {<a name="line.165"></a>
+<span class="sourceLineNo">166</span>      boolean result = delegate.nextKeyValue();<a name="line.166"></a>
+<span class="sourceLineNo">167</span>      if (result) {<a name="line.167"></a>
+<span class="sourceLineNo">168</span>        ScanMetrics scanMetrics = delegate.getScanner().getScanMetrics();<a name="line.168"></a>
+<span class="sourceLineNo">169</span>        if (scanMetrics != null &amp;&amp; context != null) {<a name="line.169"></a>
+<span class="sourceLineNo">170</span>          TableRecordReaderImpl.updateCounters(scanMetrics, 0, getCounter, context, 0);<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>      return result;<a name="line.173"></a>
+<span class="sourceLineNo">174</span>    }<a name="line.174"></a>
+<span class="sourceLineNo">175</span><a name="line.175"></a>
+<span class="sourceLineNo">176</span>    @Override<a name="line.176"></a>
+<span class="sourceLineNo">177</span>    public ImmutableBytesWritable getCurrentKey() throws IOException, InterruptedException {<a name="line.177"></a>
+<span class="sourceLineNo">178</span>      return delegate.getCurrentKey();<a name="line.178"></a>
+<span class="sourceLineNo">179</span>    }<a name="line.179"></a>
+<span class="sourceLineNo">180</span><a name="line.180"></a>
+<span class="sourceLineNo">181</span>    @Override<a name="line.181"></a>
+<span class="sourceLineNo">182</span>    public Result getCurrentValue() throws IOException, InterruptedException {<a name="line.182"></a>
+<span class="sourceLineNo">183</span>      return delegate.getCurrentValue();<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 float getProgress() throws IOException, InterruptedException {<a name="line.187"></a>
+<span class="sourceLineNo">188</span>      return delegate.getProgress();<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>    @Override<a name="line.191"></a>
+<span class="sourceLineNo">192</span>    public void close() throws IOException {<a name="line.192"></a>
+<span class="sourceLineNo">193</span>      delegate.close();<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>  @Override<a name="line.197"></a>
+<span class="sourceLineNo">198</span>  public RecordReader&lt;ImmutableBytesWritable, Result&gt; createRecordReader(<a name="line.198"></a>
+<span class="sourceLineNo">199</span>      InputSplit split, TaskAttemptContext context) throws IOException {<a name="line.199"></a>
+<span class="sourceLineNo">200</span>    return new TableSnapshotRegionRecordReader();<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>  @Override<a name="line.203"></a>
+<span class="sourceLineNo">204</span>  public List&lt;InputSplit&gt; getSplits(JobContext job) throws IOException, InterruptedException {<a name="line.204"></a>
+<span class="sourceLineNo">205</span>    List&lt;InputSplit&gt; results = new ArrayList&lt;&gt;();<a name="line.205"></a>
+<span class="sourceLineNo">206</span>    for (TableSnapshotInputFormatImpl.InputSplit split :<a name="line.206"></a>
+<span class="sourceLineNo">207</span>        TableSnapshotInputFormatImpl.getSplits(job.getConfiguration())) {<a name="line.207"></a>
+<span class="sourceLineNo">208</span>      results.add(new TableSnapshotRegionSplit(split));<a name="line.208"></a>
+<span class="sourceLineNo">209</span>    }<a name="line.209"></a>
+<span class="sourceLineNo">210</span>    return results;<a name="line.210"></a>
+<span class="sourceLineNo">211</span>  }<a name="line.211"></a>
+<span class="sourceLineNo">212</span><a name="line.212"></a>
+<span class="sourceLineNo">213</span>  /**<a name="line.213"></a>
+<span class="sourceLineNo">214</span>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.214"></a>
+<span class="sourceLineNo">215</span>   * @param job the job to configure<a name="line.215"></a>
+<span class="sourceLineNo">216</span>   * @param snapshotName the name of the snapshot to read from<a name="line.216"></a>
+<span class="sourceLineNo">217</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.217"></a>
+<span class="sourceLineNo">218</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.218"></a>
+<span class="sourceLineNo">219</span>   * After the job is finished, restoreDir can be deleted.<a name="line.219"></a>
+<span class="sourceLineNo">220</span>   * @throws IOException if an error occurs<a name="line.220"></a>
+<span class="sourceLineNo">221</span>   */<a name="line.221"></a>
+<span class="sourceLineNo">222</span>  public static void setInput(Job job, String snapshotName, Path restoreDir)<a name="line.222"></a>
+<span class="sourceLineNo">223</span>      throws IOException {<a name="line.223"></a>
+<span class="sourceLineNo">224</span>    TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir);<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>   * Configures the job to use TableSnapshotInputFormat to read from a snapshot.<a name="line.228"></a>
+<span class="sourceLineNo">229</span>   * @param job the job to configure<a name="line.229"></a>
+<span class="sourceLineNo">230</span>   * @param snapshotName the name of the snapshot to read from<a name="line.230"></a>
+<span class="sourceLineNo">231</span>   * @param restoreDir a temporary directory to restore the snapshot into. Current user should<a name="line.231"></a>
+<span class="sourceLineNo">232</span>   * have write permissions to this directory, and this should not be a subdirectory of rootdir.<a name="line.232"></a>
+<span class="sourceLineNo">233</span>   * After the job is finished, restoreDir can be deleted.<a name="line.233"></a>
+<span class="sourceLineNo">234</span>   * @param splitAlgo split algorithm to generate splits from region<a name="line.234"></a>
+<span class="sourceLineNo">235</span>   * @param numSplitsPerRegion how many input splits to generate per one region<a name="line.235"></a>
+<span class="sourceLineNo">236</span>   * @throws IOException if an error occurs<a name="line.236"></a>
+<span class="sourceLineNo">237</span>   */<a name="line.237"></a>
+<span class="sourceLineNo">238</span>   public static void setInput(Job job, String snapshotName, Path restoreDir,<a name="line.238"></a>
+<span class="sourceLineNo">239</span>                               RegionSplitter.SplitAlgorithm splitAlgo, int numSplitsPerRegion) throws IOException {<a name="line.239"></a>
+<span class="sourceLineNo">240</span>     TableSnapshotInputFormatImpl.setInput(job.getConfiguration(), snapshotName, restoreDir,<a name="line.240"></a>
+<span class="sourceLineNo">241</span>             splitAlgo, numSplitsPerRegion);<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>
 
 
 


[33/39] hbase-site git commit: Published site at 6a0c67344a86a98eaa56586524639fcf84ca1275.

Posted by gi...@apache.org.
http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 8bd2d60..5be4cac 100644
--- a/devapidocs/org/apache/hadoop/hbase/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/package-tree.html
@@ -437,19 +437,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/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/MemoryCompactionPolicy.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">MemoryCompactionPolicy</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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>
+<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/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/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/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/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/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/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/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/CompatibilitySingletonFactory.SingletonStorage.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompatibilitySingletonFactory.SingletonStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/HealthChecker.HealthCheckerExitStatus.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">HealthChecker.HealthCheckerExitStatus</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/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/Size.Unit.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">Size.Unit</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/CellBuilderType.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CellBuilderType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.<a href="../../../../org/apache/hadoop/hbase/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/CompareOperator.html" title="enum in org.apache.hadoop.hbase"><span class="typeNameLink">CompareOperator</span></a></li>
 </ul>
 </li>
 </ul>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 fe91802..c26c972 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/FlushType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">FlushType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScannerContext.NextState.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScannerContext.NextState</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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/MetricsRegionServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">MetricsRegionServerSourceFactoryImpl.FactoryStorage</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/CompactingMemStore.IndexType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">CompactingMemStore.IndexType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/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/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/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/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.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/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>
+<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/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/HRegion.FlushResult.Result.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">HRegion.FlushResult.Result</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.regionserver.<a href="../../../../../org/apache/hadoop/hbase/regionserver/ScanType.html" title="enum in org.apache.hadoop.hbase.regionserver"><span class="typeNameLink">ScanType</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 858ccf6..3bd22b5 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/StripeCompactionScanQueryMatcher.DropDeletesInOutput.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">StripeCompactionScanQueryMatcher.DropDeletesInOutput</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.regionserver.querymatcher.<a href="../../../../../../org/apache/hadoop/hbase/regionserver/querymatcher/ScanQueryMatcher.MatchCode.html" title="enum in org.apache.hadoop.hbase.regionserver.querymatcher"><span class="typeNameLink">ScanQueryMatcher.MatchCode</span></a></li>
+<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/eab0a960/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html
index d3ebe53..8f1fe91 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html
@@ -86,6 +86,10 @@
 <td class="colFirst"><a href="#org.apache.hadoop.hbase">org.apache.hadoop.hbase</a></td>
 <td class="colLast">&nbsp;</td>
 </tr>
+<tr class="rowColor">
+<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>
@@ -175,6 +179,24 @@
 </tbody>
 </table>
 </li>
+<li class="blockList"><a name="org.apache.hadoop.hbase.master">
+<!--   -->
+</a>
+<h3>Uses of <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</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 methods, and an explanation">
+<caption><span>Methods in <a href="../../../../../../org/apache/hadoop/hbase/master/package-summary.html">org.apache.hadoop.hbase.master</a> that return types with arguments of type <a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a></span><span class="tabEnd">&nbsp;</span></caption>
+<tr>
+<th class="colFirst" scope="col">Modifier and Type</th>
+<th class="colLast" scope="col">Method and Description</th>
+</tr>
+<tbody>
+<tr class="altColor">
+<td class="colFirst"><code><a href="https://docs.oracle.com/javase/8/docs/api/java/util/HashMap.html?is-external=true" title="class or interface in java.util">HashMap</a>&lt;<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>,<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/util/Pair.html" title="class in org.apache.hadoop.hbase.util">Pair</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>,<a href="../../../../../../org/apache/hadoop/hbase/replication/ReplicationLoadSource.html" title="class in org.apache.hadoop.hbase.replication">ReplicationLoadSource</a>&gt;&gt;&gt;</code></td>
+<td class="colLast"><span class="typeNameLabel">HMaster.</span><code><span class="memberNameLink"><a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html#getReplicationLoad-org.apache.hadoop.hbase.ServerName:A-">getReplicationLoad</a></span>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>[]&nbsp;serverNames)</code>&nbsp;</td>
+</tr>
+</tbody>
+</table>
+</li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/replication/package-use.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/replication/package-use.html b/devapidocs/org/apache/hadoop/hbase/replication/package-use.html
index 64f8f20..972f1d8 100644
--- a/devapidocs/org/apache/hadoop/hbase/replication/package-use.html
+++ b/devapidocs/org/apache/hadoop/hbase/replication/package-use.html
@@ -282,11 +282,16 @@
 </td>
 </tr>
 <tr class="rowColor">
+<td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/replication/class-use/ReplicationLoadSource.html#org.apache.hadoop.hbase.master">ReplicationLoadSource</a>
+<div class="block">A HBase ReplicationLoad to present MetricsSource information</div>
+</td>
+</tr>
+<tr class="altColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/replication/class-use/ReplicationPeerConfig.html#org.apache.hadoop.hbase.master">ReplicationPeerConfig</a>
 <div class="block">A configuration for the replication peer cluster.</div>
 </td>
 </tr>
-<tr class="altColor">
+<tr class="rowColor">
 <td class="colOne"><a href="../../../../../org/apache/hadoop/hbase/replication/class-use/ReplicationPeerDescription.html#org.apache.hadoop.hbase.master">ReplicationPeerDescription</a>
 <div class="block">The POJO equivalent of ReplicationProtos.ReplicationPeerDescription</div>
 </td>

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

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html b/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
index 5d49fc6..6cbfe9c 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClient.html
@@ -297,7 +297,7 @@ extends <a href="../../../../../org/apache/hadoop/hbase/security/AbstractHBaseSa
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getSaslQOP</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/security/NettyHBaseSaslRpcClient.html#line.61">getSaslQOP</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/security/NettyHBaseSaslRpcClient.html#line.58">getSaslQOP</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html b/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
index 28debb3..b650cff 100644
--- a/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
+++ b/devapidocs/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html
@@ -425,7 +425,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>tryComplete</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.81">tryComplete</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.79">tryComplete</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)</pre>
 </li>
 </ul>
 <a name="setCryptoAESOption--">
@@ -434,7 +434,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>setCryptoAESOption</h4>
-<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.92">setCryptoAESOption</a>()</pre>
+<pre>private&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.90">setCryptoAESOption</a>()</pre>
 </li>
 </ul>
 <a name="isNeedProcessConnectionHeader--">
@@ -443,7 +443,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>isNeedProcessConnectionHeader</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.99">isNeedProcessConnectionHeader</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.97">isNeedProcessConnectionHeader</a>()</pre>
 </li>
 </ul>
 <a name="handlerAdded-org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext-">
@@ -452,7 +452,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>handlerAdded</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.104">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.102">handlerAdded</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
 <dd><code>handlerAdded</code>&nbsp;in interface&nbsp;<code>org.apache.hbase.thirdparty.io.netty.channel.ChannelHandler</code></dd>
@@ -467,7 +467,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>channelRead0</h4>
-<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.125">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>protected&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.123">channelRead0</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                             org.apache.hbase.thirdparty.io.netty.buffer.ByteBuf&nbsp;msg)
                      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>
@@ -484,7 +484,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockList">
 <li class="blockList">
 <h4>channelInactive</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.155">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.151">channelInactive</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx)
                      throws <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Exception.html?is-external=true" title="class or interface in java.lang">Exception</a></pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
@@ -502,7 +502,7 @@ extends org.apache.hbase.thirdparty.io.netty.channel.SimpleChannelInboundHandler
 <ul class="blockListLast">
 <li class="blockList">
 <h4>exceptionCaught</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.162">exceptionCaught</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
+<pre>public&nbsp;void&nbsp;<a href="../../../../../src-html/org/apache/hadoop/hbase/security/NettyHBaseSaslRpcClientHandler.html#line.158">exceptionCaught</a>(org.apache.hbase.thirdparty.io.netty.channel.ChannelHandlerContext&nbsp;ctx,
                             <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;cause)</pre>
 <dl>
 <dt><span class="overrideSpecifyLabel">Specified by:</span></dt>

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

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/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 2853d09..4ade4c1 100644
--- a/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
+++ b/devapidocs/org/apache/hadoop/hbase/thrift/package-tree.html
@@ -200,8 +200,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/ThriftMetrics.ThriftServerType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftMetrics.ThriftServerType</span></a></li>
-<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 <li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/ThriftServerRunner.ImplType.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">ThriftServerRunner.ImplType</span></a></li>
+<li type="circle">org.apache.hadoop.hbase.thrift.<a href="../../../../../org/apache/hadoop/hbase/thrift/MetricsThriftServerSourceFactoryImpl.FactoryStorage.html" title="enum in org.apache.hadoop.hbase.thrift"><span class="typeNameLink">MetricsThriftServerSourceFactoryImpl.FactoryStorage</span></a></li>
 </ul>
 </li>
 </ul>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
index df781a6..35c0ea0 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html
@@ -118,7 +118,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.101">MasterStatusTmpl.ImplData</a>
+<pre>public static class <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.107">MasterStatusTmpl.ImplData</a>
 extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 </li>
 </ul>
@@ -390,7 +390,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_master</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.114">m_master</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.120">m_master</a></pre>
 </li>
 </ul>
 <a name="m_assignmentManager">
@@ -399,7 +399,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_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/tmpl/master/MasterStatusTmpl.ImplData.html#line.126">m_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/tmpl/master/MasterStatusTmpl.ImplData.html#line.132">m_assignmentManager</a></pre>
 </li>
 </ul>
 <a name="m_assignmentManager__IsNotDefault">
@@ -408,7 +408,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_assignmentManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.131">m_assignmentManager__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.137">m_assignmentManager__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_catalogJanitorEnabled">
@@ -417,7 +417,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_catalogJanitorEnabled</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.143">m_catalogJanitorEnabled</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.149">m_catalogJanitorEnabled</a></pre>
 </li>
 </ul>
 <a name="m_catalogJanitorEnabled__IsNotDefault">
@@ -426,7 +426,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_catalogJanitorEnabled__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.148">m_catalogJanitorEnabled__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.154">m_catalogJanitorEnabled__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_deadServers">
@@ -435,7 +435,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_deadServers</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.160">m_deadServers</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.166">m_deadServers</a></pre>
 </li>
 </ul>
 <a name="m_deadServers__IsNotDefault">
@@ -444,7 +444,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_deadServers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.165">m_deadServers__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.171">m_deadServers__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_filter">
@@ -453,7 +453,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_filter</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.177">m_filter</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.183">m_filter</a></pre>
 </li>
 </ul>
 <a name="m_filter__IsNotDefault">
@@ -462,7 +462,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_filter__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.182">m_filter__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.188">m_filter__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_format">
@@ -471,7 +471,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_format</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.194">m_format</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.200">m_format</a></pre>
 </li>
 </ul>
 <a name="m_format__IsNotDefault">
@@ -480,7 +480,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_format__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.199">m_format__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.205">m_format__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_frags">
@@ -489,7 +489,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_frags</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.211">m_frags</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>,<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.217">m_frags</a></pre>
 </li>
 </ul>
 <a name="m_frags__IsNotDefault">
@@ -498,7 +498,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_frags__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.216">m_frags__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.222">m_frags__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_metaLocation">
@@ -507,7 +507,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_metaLocation</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.228">m_metaLocation</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.234">m_metaLocation</a></pre>
 </li>
 </ul>
 <a name="m_metaLocation__IsNotDefault">
@@ -516,7 +516,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_metaLocation__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.233">m_metaLocation__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.239">m_metaLocation__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_serverManager">
@@ -525,7 +525,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_serverManager</h4>
-<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.245">m_serverManager</a></pre>
+<pre>private&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a> <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.251">m_serverManager</a></pre>
 </li>
 </ul>
 <a name="m_serverManager__IsNotDefault">
@@ -534,7 +534,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_serverManager__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.250">m_serverManager__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.256">m_serverManager__IsNotDefault</a></pre>
 </li>
 </ul>
 <a name="m_servers">
@@ -543,7 +543,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>m_servers</h4>
-<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.262">m_servers</a></pre>
+<pre>private&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt; <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.268">m_servers</a></pre>
 </li>
 </ul>
 <a name="m_servers__IsNotDefault">
@@ -552,7 +552,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>m_servers__IsNotDefault</h4>
-<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.267">m_servers__IsNotDefault</a></pre>
+<pre>private&nbsp;boolean <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.273">m_servers__IsNotDefault</a></pre>
 </li>
 </ul>
 </li>
@@ -569,7 +569,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>ImplData</h4>
-<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.101">ImplData</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.107">ImplData</a>()</pre>
 </li>
 </ul>
 </li>
@@ -586,7 +586,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setMaster</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.105">setMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.111">setMaster</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;master)</pre>
 </li>
 </ul>
 <a name="getMaster--">
@@ -595,7 +595,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMaster</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.110">getMaster</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/HMaster.html" title="class in org.apache.hadoop.hbase.master">HMaster</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.116">getMaster</a>()</pre>
 </li>
 </ul>
 <a name="setAssignmentManager-org.apache.hadoop.hbase.master.assignment.AssignmentManager-">
@@ -604,7 +604,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setAssignmentManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.116">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;assignmentManager)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">setAssignmentManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;assignmentManager)</pre>
 </li>
 </ul>
 <a name="getAssignmentManager--">
@@ -613,7 +613,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAssignmentManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.122">getAssignmentManager</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/assignment/AssignmentManager.html" title="class in org.apache.hadoop.hbase.master.assignment">AssignmentManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.128">getAssignmentManager</a>()</pre>
 </li>
 </ul>
 <a name="getAssignmentManager__IsNotDefault--">
@@ -622,7 +622,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getAssignmentManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.127">getAssignmentManager__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.133">getAssignmentManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setCatalogJanitorEnabled-boolean-">
@@ -631,7 +631,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setCatalogJanitorEnabled</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.133">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">setCatalogJanitorEnabled</a>(boolean&nbsp;catalogJanitorEnabled)</pre>
 </li>
 </ul>
 <a name="getCatalogJanitorEnabled--">
@@ -640,7 +640,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCatalogJanitorEnabled</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.139">getCatalogJanitorEnabled</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.145">getCatalogJanitorEnabled</a>()</pre>
 </li>
 </ul>
 <a name="getCatalogJanitorEnabled__IsNotDefault--">
@@ -649,7 +649,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getCatalogJanitorEnabled__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.144">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.150">getCatalogJanitorEnabled__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setDeadServers-java.util.Set-">
@@ -658,7 +658,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setDeadServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.150">setDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">setDeadServers</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;deadServers)</pre>
 </li>
 </ul>
 <a name="getDeadServers--">
@@ -667,7 +667,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeadServers</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.156">getDeadServers</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Set.html?is-external=true" title="class or interface in java.util">Set</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.162">getDeadServers</a>()</pre>
 </li>
 </ul>
 <a name="getDeadServers__IsNotDefault--">
@@ -676,7 +676,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getDeadServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.161">getDeadServers__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.167">getDeadServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFilter-java.lang.String-">
@@ -685,7 +685,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFilter</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.167">setFilter</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;filter)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">setFilter</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;filter)</pre>
 </li>
 </ul>
 <a name="getFilter--">
@@ -694,7 +694,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilter</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.173">getFilter</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.179">getFilter</a>()</pre>
 </li>
 </ul>
 <a name="getFilter__IsNotDefault--">
@@ -703,7 +703,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFilter__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.178">getFilter__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.184">getFilter__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFormat-java.lang.String-">
@@ -712,7 +712,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFormat</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.184">setFormat</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;format)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">setFormat</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;format)</pre>
 </li>
 </ul>
 <a name="getFormat--">
@@ -721,7 +721,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFormat</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.190">getFormat</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.196">getFormat</a>()</pre>
 </li>
 </ul>
 <a name="getFormat__IsNotDefault--">
@@ -730,7 +730,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFormat__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.195">getFormat__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.201">getFormat__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setFrags-java.util.Map-">
@@ -739,7 +739,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setFrags</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.201">setFrags</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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">setFrags</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/lang/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;frags)</pre>
 </li>
 </ul>
 <a name="getFrags--">
@@ -748,7 +748,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFrags</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.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/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.207">getFrags</a>()</pre>
+<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/Map.html?is-external=true" title="class or interface in java.util">Map</a>&lt;<a href="https://docs.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/Integer.html?is-external=true" title="class or interface in java.lang">Integer</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.213">getFrags</a>()</pre>
 </li>
 </ul>
 <a name="getFrags__IsNotDefault--">
@@ -757,7 +757,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getFrags__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.212">getFrags__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.218">getFrags__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setMetaLocation-org.apache.hadoop.hbase.ServerName-">
@@ -766,7 +766,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setMetaLocation</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.218">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">setMetaLocation</a>(<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;metaLocation)</pre>
 </li>
 </ul>
 <a name="getMetaLocation--">
@@ -775,7 +775,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaLocation</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.224">getMetaLocation</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/tmpl/master/MasterStatusTmpl.ImplData.html#line.230">getMetaLocation</a>()</pre>
 </li>
 </ul>
 <a name="getMetaLocation__IsNotDefault--">
@@ -784,7 +784,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getMetaLocation__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.229">getMetaLocation__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.235">getMetaLocation__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setServerManager-org.apache.hadoop.hbase.master.ServerManager-">
@@ -793,7 +793,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServerManager</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.235">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">setServerManager</a>(<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;serverManager)</pre>
 </li>
 </ul>
 <a name="getServerManager--">
@@ -802,7 +802,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerManager</h4>
-<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.241">getServerManager</a>()</pre>
+<pre>public&nbsp;<a href="../../../../../../org/apache/hadoop/hbase/master/ServerManager.html" title="class in org.apache.hadoop.hbase.master">ServerManager</a>&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.247">getServerManager</a>()</pre>
 </li>
 </ul>
 <a name="getServerManager__IsNotDefault--">
@@ -811,7 +811,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServerManager__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.246">getServerManager__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.252">getServerManager__IsNotDefault</a>()</pre>
 </li>
 </ul>
 <a name="setServers-java.util.List-">
@@ -820,7 +820,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>setServers</h4>
-<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.252">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
+<pre>public&nbsp;void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">setServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;servers)</pre>
 </li>
 </ul>
 <a name="getServers--">
@@ -829,7 +829,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockList">
 <li class="blockList">
 <h4>getServers</h4>
-<pre>public&nbsp;<a href="https://docs.oracle.com/javase/8/docs/api/java/util/List.html?is-external=true" title="class or interface in java.util">List</a>&lt;<a href="../../../../../../org/apache/hadoop/hbase/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.258">getServers</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/ServerName.html" title="class in org.apache.hadoop.hbase">ServerName</a>&gt;&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.264">getServers</a>()</pre>
 </li>
 </ul>
 <a name="getServers__IsNotDefault--">
@@ -838,7 +838,7 @@ extends org.jamon.AbstractTemplateProxy.ImplData</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>getServers__IsNotDefault</h4>
-<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.263">getServers__IsNotDefault</a>()</pre>
+<pre>public&nbsp;boolean&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.ImplData.html#line.269">getServers__IsNotDefault</a>()</pre>
 </li>
 </ul>
 </li>

http://git-wip-us.apache.org/repos/asf/hbase-site/blob/eab0a960/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
----------------------------------------------------------------------
diff --git a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
index 66d2bad..de80739 100644
--- a/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
+++ b/devapidocs/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html
@@ -113,7 +113,7 @@ var activeTableTab = "activeTableTab";
 </dl>
 <hr>
 <br>
-<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.94">MasterStatusTmpl.Intf</a>
+<pre>public static interface <a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.html#line.100">MasterStatusTmpl.Intf</a>
 extends org.jamon.AbstractTemplateProxy.Intf</pre>
 </li>
 </ul>
@@ -158,7 +158,7 @@ extends org.jamon.AbstractTemplateProxy.Intf</pre>
 <ul class="blockListLast">
 <li class="blockList">
 <h4>renderNoFlush</h4>
-<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html#line.98">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
+<pre>void&nbsp;<a href="../../../../../../src-html/org/apache/hadoop/hbase/tmpl/master/MasterStatusTmpl.Intf.html#line.104">renderNoFlush</a>(<a href="https://docs.oracle.com/javase/8/docs/api/java/io/Writer.html?is-external=true" title="class or interface in java.io">Writer</a>&nbsp;jamonWriter)
             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>